Page MenuHomeFreeBSD

D38133.id115348.diff
No OneTemporary

D38133.id115348.diff

diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -66,6 +66,7 @@
#include <sys/kernel.h>
#include <sys/kthread.h>
#include <sys/ktr.h>
+#include <sys/limits.h>
#include <sys/lockf.h>
#include <sys/malloc.h>
#include <sys/mount.h>
@@ -7128,8 +7129,12 @@
ASSERT_VOP_LOCKED(vp, __func__);
error = VOP_GETATTR(vp, &vattr, cred);
- if (__predict_true(error == 0))
- *size = vattr.va_size;
+ if (__predict_true(error == 0)) {
+ if (vattr.va_size <= OFF_MAX)
+ *size = vattr.va_size;
+ else
+ error = EFBIG;
+ }
return (error);
}
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -2656,9 +2656,7 @@
if (fsize == 0 && vp->v_type == VCHR &&
fo_ioctl(fp, DIOCGMEDIASIZE, &size, cred, td) == 0)
fsize = size;
- if (noneg &&
- (fsize > OFF_MAX ||
- (offset > 0 && fsize > OFF_MAX - offset))) {
+ if (noneg && offset > 0 && fsize > OFF_MAX - offset) {
error = EOVERFLOW;
break;
}

File Metadata

Mime Type
text/plain
Expires
Sat, Jul 25, 4:35 PM (8 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35479821
Default Alt Text
D38133.id115348.diff (1 KB)

Event Timeline