aboutsummaryrefslogtreecommitdiffstats
path: root/testing/nvi/08lfs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/nvi/08lfs.patch')
-rw-r--r--testing/nvi/08lfs.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/testing/nvi/08lfs.patch b/testing/nvi/08lfs.patch
new file mode 100644
index 0000000000..e5d9399a98
--- /dev/null
+++ b/testing/nvi/08lfs.patch
@@ -0,0 +1,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