Blame SOURCES/iptables-restore-save-exit-when-given-an-unknown-opt.patch

43df5c
From 7450d63abf0608efba8d48858e54ff23f2179300 Mon Sep 17 00:00:00 2001
43df5c
From: Phil Sutter <psutter@redhat.com>
43df5c
Date: Fri, 11 May 2018 15:29:24 +0200
43df5c
Subject: [PATCH] iptables-restore/save: exit when given an unknown option
43df5c
43df5c
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1465078
43df5c
Upstream Status: iptables commit d89dc47ab3875
43df5c
Conflicts:
43df5c
 * Context changes in ip{6,}tables-restore.c
43df5c
 * xtables-{save,restore}.c not present here.
43df5c
43df5c
commit d89dc47ab3875f6fe6679cebceccd2000bf81b8e
43df5c
Author: Vincent Bernat <vincent@bernat.im>
43df5c
Date:   Sat Apr 15 12:16:47 2017 +0200
43df5c
43df5c
    iptables-restore/save: exit when given an unknown option
43df5c
43df5c
    When an unknown option is given, iptables-restore should exit instead of
43df5c
    continue its operation. For example, if `--table` was misspelled, this
43df5c
    could lead to an unwanted change. Moreover, exit with a status code of
43df5c
    1. Make the same change for iptables-save.
43df5c
43df5c
    OTOH, exit with a status code of 0 when requesting help.
43df5c
43df5c
    Signed-off-by: Vincent Bernat <vincent@bernat.im>
43df5c
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
43df5c
43df5c
Signed-off-by: Phil Sutter <psutter@redhat.com>
43df5c
---
43df5c
 iptables/ip6tables-restore.c | 10 +++++-----
43df5c
 iptables/ip6tables-save.c    |  4 ++++
43df5c
 iptables/iptables-restore.c  | 10 +++++-----
43df5c
 iptables/iptables-save.c     |  4 ++++
43df5c
 4 files changed, 18 insertions(+), 10 deletions(-)
43df5c
43df5c
diff --git a/iptables/ip6tables-restore.c b/iptables/ip6tables-restore.c
43df5c
index 0b8b95607febf..0f85fee3593d5 100644
43df5c
--- a/iptables/ip6tables-restore.c
43df5c
+++ b/iptables/ip6tables-restore.c
43df5c
@@ -48,8 +48,6 @@ static const struct option options[] = {
43df5c
 	{NULL},
43df5c
 };
43df5c
 
43df5c
-static void print_usage(const char *name, const char *version) __attribute__((noreturn));
43df5c
-
43df5c
 #define prog_name ip6tables_globals.program_name
43df5c
 #define prog_vers ip6tables_globals.program_version
43df5c
 
43df5c
@@ -66,8 +64,6 @@ static void print_usage(const char *name, const char *version)
43df5c
 			"	   [ --wait-interval=<usecs>\n"
43df5c
 			"	   [ --noflush ]\n"
43df5c
 			"	   [ --modprobe=<command>]\n", name);
43df5c
-
43df5c
-	exit(1);
43df5c
 }
43df5c
 
43df5c
 static struct xtc_handle *create_handle(const char *tablename)
43df5c
@@ -238,7 +234,7 @@ int ip6tables_restore_main(int argc, char *argv[])
43df5c
 			case 'h':
43df5c
 				print_usage("ip6tables-restore",
43df5c
 					    IPTABLES_VERSION);
43df5c
-				break;
43df5c
+				exit(0);
43df5c
 			case 'n':
43df5c
 				noflush = 1;
43df5c
 				break;
43df5c
@@ -254,6 +250,10 @@ int ip6tables_restore_main(int argc, char *argv[])
43df5c
 			case 'T':
43df5c
 				tablename = optarg;
43df5c
 				break;
43df5c
+			default:
43df5c
+				fprintf(stderr,
43df5c
+					"Try `ip6tables-restore -h' for more information.\n");
43df5c
+				exit(1);
43df5c
 		}
43df5c
 	}
43df5c
 
43df5c
diff --git a/iptables/ip6tables-save.c b/iptables/ip6tables-save.c
43df5c
index 3a1ded162fad1..a64d169fc1211 100644
43df5c
--- a/iptables/ip6tables-save.c
43df5c
+++ b/iptables/ip6tables-save.c
43df5c
@@ -157,6 +157,10 @@ int ip6tables_save_main(int argc, char *argv[])
43df5c
 		case 'd':
43df5c
 			do_output(tablename);
43df5c
 			exit(0);
43df5c
+		default:
43df5c
+			fprintf(stderr,
43df5c
+				"Look at manual page `ip6tables-save.8' for more information.\n");
43df5c
+			exit(1);
43df5c
 		}
43df5c
 	}
43df5c
 
43df5c
diff --git a/iptables/iptables-restore.c b/iptables/iptables-restore.c
43df5c
index 7aab1e78d7e0e..6d0df8d1c0f36 100644
43df5c
--- a/iptables/iptables-restore.c
43df5c
+++ b/iptables/iptables-restore.c
43df5c
@@ -45,8 +45,6 @@ static const struct option options[] = {
43df5c
 	{NULL},
43df5c
 };
43df5c
 
43df5c
-static void print_usage(const char *name, const char *version) __attribute__((noreturn));
43df5c
-
43df5c
 #define prog_name iptables_globals.program_name
43df5c
 #define prog_vers iptables_globals.program_version
43df5c
 
43df5c
@@ -64,8 +62,6 @@ static void print_usage(const char *name, const char *version)
43df5c
 			"	   [ --wait-interval=<usecs>\n"
43df5c
 			"	   [ --table= ]\n"
43df5c
 			"	   [ --modprobe=<command>]\n", name);
43df5c
-
43df5c
-	exit(1);
43df5c
 }
43df5c
 
43df5c
 static struct xtc_handle *create_handle(const char *tablename)
43df5c
@@ -237,7 +233,7 @@ iptables_restore_main(int argc, char *argv[])
43df5c
 			case 'h':
43df5c
 				print_usage("iptables-restore",
43df5c
 					    IPTABLES_VERSION);
43df5c
-				break;
43df5c
+				exit(0);
43df5c
 			case 'n':
43df5c
 				noflush = 1;
43df5c
 				break;
43df5c
@@ -253,6 +249,10 @@ iptables_restore_main(int argc, char *argv[])
43df5c
 			case 'T':
43df5c
 				tablename = optarg;
43df5c
 				break;
43df5c
+			default:
43df5c
+				fprintf(stderr,
43df5c
+					"Try `iptables-restore -h' for more information.\n");
43df5c
+				exit(1);
43df5c
 		}
43df5c
 	}
43df5c
 
43df5c
diff --git a/iptables/iptables-save.c b/iptables/iptables-save.c
43df5c
index 21f8839e8cd82..87bc885735dc3 100644
43df5c
--- a/iptables/iptables-save.c
43df5c
+++ b/iptables/iptables-save.c
43df5c
@@ -156,6 +156,10 @@ iptables_save_main(int argc, char *argv[])
43df5c
 		case 'd':
43df5c
 			do_output(tablename);
43df5c
 			exit(0);
43df5c
+		default:
43df5c
+			fprintf(stderr,
43df5c
+				"Look at manual page `iptables-save.8' for more information.\n");
43df5c
+			exit(1);
43df5c
 		}
43df5c
 	}
43df5c
 
43df5c
-- 
43df5c
2.17.0
43df5c