29 lines
1 KiB
Diff
29 lines
1 KiB
Diff
|
#! /bin/sh /usr/share/dpatch/dpatch-run
|
||
|
## 08lfs.dpatch by <hesso@pool.math.tu-berlin.de>
|
||
|
##
|
||
|
## DP: Insert a safety check to save large files from being overwritten.
|
||
|
|
||
|
@DPATCH@
|
||
|
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
|