Page MenuHomeFreeBSD

D38133.id115373.diff
No OneTemporary

D38133.id115373.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
Thu, Apr 24, 2:39 AM (9 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17748136
Default Alt Text
D38133.id115373.diff (1 KB)

Event Timeline