From 071ede1e5de784820f39c2546000c08d74b12f6d Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 15 May 2009 23:23:23 +0200 Subject: [PATCH] xmalloc_[open_]read[_close]: do not ignore xrealloc return value Signed-off-by: Denys Vlasenko --- include/libbb.h | 6 ++++++ libbb/read.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/libbb.h b/include/libbb.h index 128aa9207..bae7efb00 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -965,6 +965,12 @@ enum { /* How long the longest ESC sequence we know? */ KEYCODE_BUFFER_SIZE = 4 }; +/* Note: fd may be in blocking or non-blocking mode, both make sense. + * For one, less uses non-blocking mode. + * Only the first read syscall inside read_key may block indefinitely + * (unless fd is in non-blocking mode), + * subsequent reads will time out after a few milliseconds. + */ int read_key(int fd, smalluint *nbuffered, char *buffer) FAST_FUNC; diff --git a/libbb/read.c b/libbb/read.c index a0c0cc64a..b58982b32 100644 --- a/libbb/read.c +++ b/libbb/read.c @@ -229,7 +229,7 @@ void* FAST_FUNC xmalloc_read(int fd, size_t *maxsz_p) if (size > 64*1024) size = 64*1024; } - xrealloc(buf, total + 1); + buf = xrealloc(buf, total + 1); buf[total] = '\0'; if (maxsz_p) @@ -273,7 +273,7 @@ void* FAST_FUNC xmalloc_open_read_close(const char *filename, size_t *maxsz_p) free(buf); return NULL; } - xrealloc(buf, size + 1); + buf = xrealloc(buf, size + 1); buf[size] = '\0'; if (maxsz_p)