get_pid.c: Use tighter validation checks
Neither a pid_t below 1 nor a negative fd could be valid in this context. Proof of Concept: $ newuidmap -1 1 1 1 newuidmap: Could not open proc directory for target 4294967295 Signed-off-by: Samanta Navarro <ferivoz@riseup.net>
This commit is contained in:
parent
a022d39d2a
commit
4ef4477535
@ -24,6 +24,7 @@ int get_pid (const char *pidstr, pid_t *pid)
|
|||||||
if ( ('\0' == *pidstr)
|
if ( ('\0' == *pidstr)
|
||||||
|| ('\0' != *endptr)
|
|| ('\0' != *endptr)
|
||||||
|| (ERANGE == errno)
|
|| (ERANGE == errno)
|
||||||
|
|| (val < 1)
|
||||||
|| (/*@+longintegral@*/val != (pid_t)val)/*@=longintegral@*/) {
|
|| (/*@+longintegral@*/val != (pid_t)val)/*@=longintegral@*/) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -49,7 +50,8 @@ int get_pidfd_from_fd(const char *pidfdstr)
|
|||||||
if ( ('\0' == *pidfdstr)
|
if ( ('\0' == *pidfdstr)
|
||||||
|| ('\0' != *endptr)
|
|| ('\0' != *endptr)
|
||||||
|| (ERANGE == errno)
|
|| (ERANGE == errno)
|
||||||
|| (/*@+longintegral@*/val != (pid_t)val)/*@=longintegral@*/) {
|
|| (val < 0)
|
||||||
|
|| (/*@+longintegral@*/val != (int)val)/*@=longintegral@*/) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user