← Commit list

d709743b0

Manuel Novoa III
Manuel Novoa III
2004-05-26
FAILED Duration: 28s

Subject

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.

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

coreutils/tee.c+6 -2
@@ -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