michal-grzedzicki / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone
ea9a62
From 8f416b275a365426b07c75adfc017e0b18a85450 Mon Sep 17 00:00:00 2001
ea9a62
From: Florian Festi <ffesti@redhat.com>
ea9a62
Date: Fri, 16 Dec 2022 15:45:20 +0100
ea9a62
Subject: [PATCH] rpm2archive: Properly parse popt options
ea9a62
ea9a62
and issue an error message for unknown options. Before unknown options
ea9a62
could mess up the argument parsing leading to reading and writing from
ea9a62
stdin/stdout.
ea9a62
ea9a62
Thanks to Eva Mrakova and the Red Hat QE team for spotting this!
ea9a62
---
ea9a62
 rpm2archive.c | 8 ++++++++
ea9a62
 1 file changed, 8 insertions(+)
ea9a62
ea9a62
diff --git a/rpm2archive.c b/rpm2archive.c
ea9a62
index de1a17d2b..09da8d16b 100644
ea9a62
--- a/rpm2archive.c
ea9a62
+++ b/rpm2archive.c
ea9a62
@@ -233,6 +233,14 @@ int main(int argc, const char *argv[])
ea9a62
 
ea9a62
     optCon = poptGetContext(NULL, argc, argv, optionsTable, 0);
ea9a62
     poptSetOtherOptionHelp(optCon, "[OPTIONS]* <FILES>");
ea9a62
+    while ((rc = poptGetNextOpt(optCon)) != -1) {
ea9a62
+	if (rc < 0) {
ea9a62
+	    fprintf(stderr, "%s: %s\n",
ea9a62
+		    poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
ea9a62
+		    poptStrerror(rc));
ea9a62
+	    exit(EXIT_FAILURE);
ea9a62
+	}
ea9a62
+    }
ea9a62
     if (argc < 2 || poptGetNextOpt(optCon) == 0) {
ea9a62
 	poptPrintUsage(optCon, stderr, 0);
ea9a62
 	exit(EXIT_FAILURE);
ea9a62
-- 
ea9a62
2.38.1
ea9a62