summaryrefslogtreecommitdiff
path: root/backport-rpmkeys-exit-non-zero-on-I-O-errors.patch
diff options
context:
space:
mode:
Diffstat (limited to 'backport-rpmkeys-exit-non-zero-on-I-O-errors.patch')
-rw-r--r--backport-rpmkeys-exit-non-zero-on-I-O-errors.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/backport-rpmkeys-exit-non-zero-on-I-O-errors.patch b/backport-rpmkeys-exit-non-zero-on-I-O-errors.patch
new file mode 100644
index 0000000..ac18f35
--- /dev/null
+++ b/backport-rpmkeys-exit-non-zero-on-I-O-errors.patch
@@ -0,0 +1,53 @@
+From fc8386be36a32f8462a0d16a2dd3e5e18f7fbc2d Mon Sep 17 00:00:00 2001
+From: Demi Marie Obenour <demi@invisiblethingslab.com>
+Date: Mon, 12 Apr 2021 11:30:51 -0400
+Subject: [PATCH] rpmkeys: exit non-zero on I/O errors
+
+If writing to stdout or stderr fails, rpmkeys should exit with a
+non-zero status code.
+---
+ rpmkeys.c | 4 ++++
+ tests/rpmsigdig.at | 13 +++++++++++++
+ 2 files changed, 17 insertions(+)
+
+diff --git a/rpmkeys.c b/rpmkeys.c
+index 542601c..2c304de 100644
+--- a/rpmkeys.c
++++ b/rpmkeys.c
+@@ -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 c8b9f13..429163e 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([
+--
+1.8.3.1
+