If read were to return with an error, bad things would happen. Fix it. Also, make sure read errors are reflected in the applet exit code.
No binary (build failed)
—
(log yok)
| @@ -38,7 +38,7 @@ int tee_main(int argc, char **argv) | |
| int flags; | |
| int retval = EXIT_SUCCESS; | |
| #ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO | |
| - | size_t c; |
| + | ssize_t c; |
| RESERVE_CONFIG_BUFFER(buf, BUFSIZ); | |
| #else | |
| int c; | |
| @@ -78,12 +78,16 @@ int tee_main(int argc, char **argv) | |
| *p = NULL; /* Store the sentinal value. */ | |
| #ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO | |
| - | while ((c = read(STDIN_FILENO, buf, BUFSIZ)) != 0) { |
| + | while ((c = safe_read(STDIN_FILENO, buf, BUFSIZ)) > 0) { |
| for (p=files ; *p ; p++) { | |
| fwrite(buf, 1, c, *p); | |
| } | |
| } | |
| + | if (c < 0) { /* Make sure read errors are signaled. */ |
| + | retval = EXIT_FAILURE; |
| + | } |
| + | |
| #ifdef CONFIG_FEATURE_CLEAN_UP | |
| RELEASE_CONFIG_BUFFER(buf); | |
| #endif | |