diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2012-09-25 14:42:18 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2012-09-25 14:42:18 +0000 |
commit | aeb5b827c5f7ed858a5b15101d1a3893356cc6ba (patch) | |
tree | 5d8e4382197847df3cf875caac4994390b6f1094 /libc/libio/iogetdelim.c | |
parent | 598804b7d4191eddbaf24784c3b25a6c4d6f33cd (diff) | |
download | eglibc2-aeb5b827c5f7ed858a5b15101d1a3893356cc6ba.tar.gz |
Merge changes between r20391 and r20863 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@20864 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/libio/iogetdelim.c')
-rw-r--r-- | libc/libio/iogetdelim.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libc/libio/iogetdelim.c b/libc/libio/iogetdelim.c index 405b65f1e..bf4b0f776 100644 --- a/libc/libio/iogetdelim.c +++ b/libc/libio/iogetdelim.c @@ -29,6 +29,7 @@ #include "libioP.h" #include <string.h> #include <errno.h> +#include <limits.h> /* Read up to (and including) a TERMINATOR from FP into *LINEPTR (and null-terminate it). *LINEPTR is a pointer returned from malloc (or @@ -89,7 +90,7 @@ _IO_getdelim (lineptr, n, delimiter, fp) t = (char *) memchr ((void *) fp->_IO_read_ptr, delimiter, len); if (t != NULL) len = (t - fp->_IO_read_ptr) + 1; - if (__builtin_expect (cur_len + len + 1 < 0, 0)) + if (__builtin_expect (len >= SSIZE_MAX - cur_len, 0)) { __set_errno (EOVERFLOW); result = -1; |