This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, attached there is a patch to add some validation for parameters of Mach's nanosleep() (used by Hurd). Thanks, -- Pino Toscano
mach: nanosleep: check for invalid parameter values Check for invalid values of the `requested_time' parameters; move the calculation of `ms' after the validation of `requested_time'. 2011-12-10 Pino Toscano <toscano.pino@tiscali.it> * sysdeps/mach/nanosleep.c (__nanosleep): Return EINVAL for negative seconds or nanoseconds of `requested_time', or for nanoseconds equal or greater than 1000000000. --- a/sysdeps/mach/nanosleep.c +++ b/sysdeps/mach/nanosleep.c @@ -28,11 +28,19 @@ __nanosleep (const struct timespec *requ { mach_port_t recv; struct timeval before, after; - const mach_msg_timeout_t ms - = requested_time->tv_sec * 1000 - + (requested_time->tv_nsec + 999999) / 1000000; + mach_msg_timeout_t ms; + + if (requested_time->tv_sec < 0 + || requested_time->tv_nsec < 0 + || requested_time->tv_nsec >= 1000000000) + { + errno = EINVAL; + return -1; + } recv = __mach_reply_port (); + ms = requested_time->tv_sec * 1000 + + (requested_time->tv_nsec + 999999) / 1000000; if (remaining && __gettimeofday (&before, NULL) < 0) return -1;
Attachment:
signature.asc
Description: This is a digitally signed message part.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |