mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
adv. lock:
detect off_t overflow _before_ it occurse and return EOVERFLOW instead of EINVAL
This commit is contained in:
parent
69cc1d0d7f
commit
e9d095afdc
2 changed files with 10 additions and 10 deletions
|
|
@ -29,6 +29,7 @@
|
|||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/limits.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
|
@ -98,13 +99,12 @@ nfs_dolock(ap)
|
|||
|
||||
/*
|
||||
* the NLM protocol doesn't allow the server to return an error
|
||||
* on ranges, so we do it. Note that we should be returning
|
||||
* EOVERFLOW in some cases, but we don't have it.
|
||||
* on ranges, so we do it.
|
||||
*/
|
||||
if (fl->l_start < 0 || fl->l_len < 0 ||
|
||||
((fl->l_len != 0 &&
|
||||
(fl->l_start + fl->l_len - 1) < 0)))
|
||||
if (fl->l_start < 0 || fl->l_len < 0)
|
||||
return (EINVAL);
|
||||
if (fl->l_len != 0 && (fl->l_len - 1 > OFF_MAX - fl->l_start))
|
||||
return (EOVERFLOW);
|
||||
|
||||
/*
|
||||
* Fill in the information structure.
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/limits.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
|
@ -98,13 +99,12 @@ nfs_dolock(ap)
|
|||
|
||||
/*
|
||||
* the NLM protocol doesn't allow the server to return an error
|
||||
* on ranges, so we do it. Note that we should be returning
|
||||
* EOVERFLOW in some cases, but we don't have it.
|
||||
* on ranges, so we do it.
|
||||
*/
|
||||
if (fl->l_start < 0 || fl->l_len < 0 ||
|
||||
((fl->l_len != 0 &&
|
||||
(fl->l_start + fl->l_len - 1) < 0)))
|
||||
if (fl->l_start < 0 || fl->l_len < 0)
|
||||
return (EINVAL);
|
||||
if (fl->l_len != 0 && (fl->l_len - 1 > OFF_MAX - fl->l_start))
|
||||
return (EOVERFLOW);
|
||||
|
||||
/*
|
||||
* Fill in the information structure.
|
||||
|
|
|
|||
Loading…
Reference in a new issue