mirror of
https://github.com/sheumann/hush.git
synced 2024-08-20 19:29:02 +00:00
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.
This commit is contained in:
parent
a6f6a95ba4
commit
d709743b09
@ -38,7 +38,7 @@ int tee_main(int argc, char **argv)
|
|||||||
int flags;
|
int flags;
|
||||||
int retval = EXIT_SUCCESS;
|
int retval = EXIT_SUCCESS;
|
||||||
#ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO
|
#ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO
|
||||||
size_t c;
|
ssize_t c;
|
||||||
RESERVE_CONFIG_BUFFER(buf, BUFSIZ);
|
RESERVE_CONFIG_BUFFER(buf, BUFSIZ);
|
||||||
#else
|
#else
|
||||||
int c;
|
int c;
|
||||||
@ -78,12 +78,16 @@ int tee_main(int argc, char **argv)
|
|||||||
*p = NULL; /* Store the sentinal value. */
|
*p = NULL; /* Store the sentinal value. */
|
||||||
|
|
||||||
#ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO
|
#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++) {
|
for (p=files ; *p ; p++) {
|
||||||
fwrite(buf, 1, c, *p);
|
fwrite(buf, 1, c, *p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (c < 0) { /* Make sure read errors are signaled. */
|
||||||
|
retval = EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_FEATURE_CLEAN_UP
|
#ifdef CONFIG_FEATURE_CLEAN_UP
|
||||||
RELEASE_CONFIG_BUFFER(buf);
|
RELEASE_CONFIG_BUFFER(buf);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user