diff options
Diffstat (limited to 'libpam/pam_modutil_ioloop.c')
-rw-r--r-- | libpam/pam_modutil_ioloop.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libpam/pam_modutil_ioloop.c b/libpam/pam_modutil_ioloop.c index 54ab0e55..72b58455 100644 --- a/libpam/pam_modutil_ioloop.c +++ b/libpam/pam_modutil_ioloop.c @@ -1,8 +1,8 @@ /* * $Id$ * - * These functions provides common methods for ensure a complete read or - * write occurs. It handles EINTR and partial read/write returns. + * These functions provide common methods to ensure a complete read or + * write occurs. They handle EINTR and partial read/write returns. */ #include "pam_modutil_private.h" @@ -15,6 +15,11 @@ pam_modutil_read(int fd, char *buffer, int count) { int block, offset = 0; + if (count < 0) { + errno = EINVAL; + return -1; + } + while (count > 0) { block = read(fd, &buffer[offset], count); @@ -36,6 +41,11 @@ pam_modutil_write(int fd, const char *buffer, int count) { int block, offset = 0; + if (count < 0) { + errno = EINVAL; + return -1; + } + while (count > 0) { block = write(fd, &buffer[offset], count); |