diff options
author | Demi Marie Obenour <demi@invisiblethingslab.com> | 2021-04-12 11:30:51 -0400 |
---|---|---|
committer | Michal Domonkos <mdomonko@redhat.com> | 2022-07-01 10:52:14 +0200 |
commit | 4543b66f9ddbc61c760b45397bbbe1eaad2b21b3 (patch) | |
tree | f12f823de0c8663963b52965c195888c5d0272f7 | |
parent | 86319dc03357c9855ca26281808b945857656a1e (diff) | |
download | rpm-4543b66f9ddbc61c760b45397bbbe1eaad2b21b3.tar.gz |
rpmkeys: exit non-zero on I/O errors
If writing to stdout or stderr fails, rpmkeys should exit with a
non-zero status code.
(cherry picked from commit fc8386be36a32f8462a0d16a2dd3e5e18f7fbc2d)
-rw-r--r-- | rpmkeys.c | 4 | ||||
-rw-r--r-- | tests/rpmsigdig.at | 13 |
2 files changed, 17 insertions, 0 deletions
@@ -86,5 +86,9 @@ int main(int argc, char *argv[]) exit: rpmtsFree(ts); rpmcliFini(optCon); + fflush(stderr); + fflush(stdout); + if (ferror(stdout) || ferror(stderr)) + return 255; /* I/O error */ return ec; } diff --git a/tests/rpmsigdig.at b/tests/rpmsigdig.at index 6b51a967f..d60c58869 100644 --- a/tests/rpmsigdig.at +++ b/tests/rpmsigdig.at @@ -24,6 +24,19 @@ runroot rpmkeys -Kv /data/RPMS/hello-2.0-1.x86_64.rpm /data/RPMS/hello-1.0-1.i38 []) AT_CLEANUP +# ------------------------------ +# Test rpmkeys write errors +AT_SETUP([[rpmkeys -K no space left on stdout]]) +AT_KEYWORDS([rpmkeys digest]) +AT_CHECK([ +RPMDB_INIT[ + +runroot rpmkeys -Kv /data/RPMS/hello-2.0-1.x86_64.rpm /data/RPMS/hello-1.0-1.i386.rpm >/dev/full +]],255,,[[Error writing to log: No space left on device +]]) +AT_CLEANUP + + AT_SETUP([rpmkeys -Kv <reconstructed> 1]) AT_KEYWORDS([rpmkeys digest]) AT_CHECK([ |