diff options
-rw-r--r-- | sys/fs/smbfs/smbfs_vnops.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c index 6139351..4c20ca1e 100644 --- a/sys/fs/smbfs/smbfs_vnops.c +++ b/sys/fs/smbfs/smbfs_vnops.c @@ -992,17 +992,20 @@ smbfs_advlock(ap) } size = np->n_size; switch (fl->l_whence) { - case SEEK_SET: - case SEEK_CUR: + + case SEEK_SET: + case SEEK_CUR: start = fl->l_start; 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)) + + case SEEK_END: + if (size > OFF_MAX || + (fl->l_start > 0 && size > OFF_MAX - fl->l_start)) return EOVERFLOW; - start = fl->l_start + size; + start = size + fl->l_start; break; - default: + + default: return EINVAL; } if (start < 0) |