diff options
-rw-r--r-- | sys/kern/kern_descrip.c | 7 | ||||
-rw-r--r-- | sys/kern/kern_lockf.c | 4 |
2 files changed, 5 insertions, 6 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index f1f6284..d040690 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -307,10 +307,9 @@ fcntl(p, uap) return (error); } if (fl.l_whence == SEEK_CUR) { - if ((fl.l_start > 0 && - fp->f_offset > OFF_MAX - fl.l_start) || - (fl.l_start < 0 && - fp->f_offset < OFF_MIN - fl.l_start)) { + if (fp->f_offset < 0 || + (fl.l_start > 0 && + fp->f_offset > OFF_MAX - fl.l_start)) { fdrop(fp, p); return (EOVERFLOW); } diff --git a/sys/kern/kern_lockf.c b/sys/kern/kern_lockf.c index 47f470c..c60705f 100644 --- a/sys/kern/kern_lockf.c +++ b/sys/kern/kern_lockf.c @@ -121,8 +121,8 @@ lf_advlock(ap, head, size) break; case SEEK_END: - if ((fl->l_start > 0 && size > OFF_MAX - fl->l_start) || - (fl->l_start < 0 && size + fl->l_start > OFF_MAX)) + if (size > OFF_MAX || + (fl->l_start > 0 && size > OFF_MAX - fl->l_start)) return (EOVERFLOW); start = size + fl->l_start; break; |