From: Manuel Zerpies <[email protected]> Check the return values of read(), write() and fgets().
Signed-off-by: Manuel Zerpies <[email protected]> --- applets/applet_tables.c | 5 ++++- applets/usage.c | 7 +++++-- libbb/lineedit.c | 4 +++- libbb/xfuncs_printf.c | 4 +++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/applets/applet_tables.c b/applets/applet_tables.c index 152d5f4..ffd4a82 100644 --- a/applets/applet_tables.c +++ b/applets/applet_tables.c @@ -141,8 +141,11 @@ int main(int argc, char **argv) line_old[0] = 0; fp = fopen(argv[2], "r"); if (fp) { - fgets(line_old, sizeof(line_old), fp); + char *c = fgets(line_old, sizeof(line_old), fp); fclose(fp); + if (c == NULL) { + return 1; + } } sprintf(line_new, "#define NUM_APPLETS %u\n", NUM_APPLETS); if (strcmp(line_old, line_new) != 0) { diff --git a/applets/usage.c b/applets/usage.c index 94520ff..faa6b27 100644 --- a/applets/usage.c +++ b/applets/usage.c @@ -48,8 +48,11 @@ int main(void) qsort(usage_array, num_messages, sizeof(usage_array[0]), compare_func); - for (i = 0; i < num_messages; i++) - write(STDOUT_FILENO, usage_array[i].usage, strlen(usage_array[i].usage) + 1); + for (i = 0; i < num_messages; i++) { + ssize_t r = write(STDOUT_FILENO, usage_array[i].usage, strlen(usage_array[i].usage) + 1); + if (r < 0) + return 1; + } return 0; } diff --git a/libbb/lineedit.c b/libbb/lineedit.c index b89748a..356c7f1 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c @@ -2729,7 +2729,9 @@ int FAST_FUNC read_line_input(const char* prompt, char* command, int maxsize) { fputs(prompt, stdout); fflush_all(); - fgets(command, maxsize, stdin); + char *c = fgets(command, maxsize, stdin); + if (c == NULL) + return 0; return strlen(command); } diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 29c963f..9c76fbb 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -590,8 +590,10 @@ void FAST_FUNC generate_uuid(uint8_t *buf) i = open("/dev/urandom", O_RDONLY); if (i >= 0) { - read(i, buf, 16); + ssize_t r = read(i, buf, 16); close(i); + if (r < 0) + return; } /* Paranoia. /dev/urandom may be missing. * rand() is guaranteed to generate at least [0, 2^15) range, -- 1.7.0.4 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
