summaryrefslogtreecommitdiff
path: root/libc/libio/iogetdelim.c
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-09-25 14:42:18 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-09-25 14:42:18 +0000
commitaeb5b827c5f7ed858a5b15101d1a3893356cc6ba (patch)
tree5d8e4382197847df3cf875caac4994390b6f1094 /libc/libio/iogetdelim.c
parent598804b7d4191eddbaf24784c3b25a6c4d6f33cd (diff)
downloadeglibc2-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.c3
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;