aboutsummaryrefslogtreecommitdiffstats
path: root/testing/nvi/08lfs.patch
blob: e5d9399a98b64c038aad404e453a289f9811211c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
From: <hesso@pool.math.tu-berlin.de>
Subject: Insert a safety check to save large files from being overwritten.

diff -Naur nvi-1.81.6.orig/common/exf.c nvi-1.81.6/common/exf.c
--- nvi-1.81.6.orig/common/exf.c	2007-11-18 17:41:42.000000000 +0100
+++ nvi-1.81.6/common/exf.c	2008-05-01 18:09:55.000000000 +0200
@@ -157,6 +157,18 @@
 	 */
 	if (file_spath(sp, frp, &sb, &exists))
 		return (1);
+        /*
+         * On LFS systems, it's possible that stat returned an error because
+         * the file is >2GB, which nvi would normally treat as "doesn't exist"
+         * and eventually overwrite. That's no good. Rather than mess with
+         * every stat() call in file_spath, we'll just check again here.
+         */
+        if (!exists && stat(frp->name, &sb)) {
+            if (errno == EOVERFLOW) {
+                msgq(sp, M_ERR,  "File too large (>2GB, probably)");
+                goto err;
+            }
+        }
 
 	/*
 	 * Check whether we already have this file opened in some