diff --git a/bugfix-add-check-fw-in-entry.patch b/bugfix-add-check-fw-in-entry.patch new file mode 100644 index 0000000000000000000000000000000000000000..e2ca0503d3ada689214ab7e6d7494ee03b41d966 --- /dev/null +++ b/bugfix-add-check-fw-in-entry.patch @@ -0,0 +1,135 @@ +From cbc3a30711701f0e8d7f5df14f84adfb2c9fec1f Mon Sep 17 00:00:00 2001 +From: majun +Date: Fri, 16 Apr 2021 14:52:42 +0800 +Subject: [PATCH] + +iptables: add null check for fw in X_entry +If the fw pointer is empty, a core dump occurs. + +--- + iptables/ip6tables.c | 21 +++++++++++++++++++++ + iptables/iptables.c | 20 ++++++++++++++++++++ + 2 files changed, 41 insertions(+) + +diff --git a/iptables/ip6tables.c b/iptables/ip6tables.c +index 576c2cf..db79906 100644 +--- a/iptables/ip6tables.c ++++ b/iptables/ip6tables.c +@@ -557,6 +557,10 @@ append_entry(const xt_chainlabel chain, + unsigned int i, j; + int ret = 1; + ++ if (!fw) { ++ return 0; ++ } ++ + for (i = 0; i < nsaddrs; i++) { + fw->ipv6.src = saddrs[i]; + fw->ipv6.smsk = smasks[i]; +@@ -581,6 +585,11 @@ replace_entry(const xt_chainlabel chain, + int verbose, + struct xtc_handle *handle) + { ++ ++ if (!fw) { ++ return 0; ++ } ++ + fw->ipv6.src = *saddr; + fw->ipv6.dst = *daddr; + fw->ipv6.smsk = *smask; +@@ -607,6 +616,10 @@ insert_entry(const xt_chainlabel chain, + unsigned int i, j; + int ret = 1; + ++ if (!fw) { ++ return 0; ++ } ++ + for (i = 0; i < nsaddrs; i++) { + fw->ipv6.src = saddrs[i]; + fw->ipv6.smsk = smasks[i]; +@@ -674,6 +687,10 @@ delete_entry(const xt_chainlabel chain, + int ret = 1; + unsigned char *mask; + ++ if (!fw) { ++ return 0; ++ } ++ + mask = make_delete_mask(matches, target); + for (i = 0; i < nsaddrs; i++) { + fw->ipv6.src = saddrs[i]; +@@ -704,6 +721,10 @@ check_entry(const xt_chainlabel chain, struct ip6t_entry *fw, + int ret = 1; + unsigned char *mask; + ++ if (!fw) { ++ return 0; ++ } ++ + mask = make_delete_mask(matches, target); + for (i = 0; i < nsaddrs; i++) { + fw->ipv6.src = saddrs[i]; +diff --git a/iptables/iptables.c b/iptables/iptables.c +index 88ef6cf..6507603 100644 +--- a/iptables/iptables.c ++++ b/iptables/iptables.c +@@ -549,6 +549,10 @@ append_entry(const xt_chainlabel chain, + unsigned int i, j; + int ret = 1; + ++ if (!fw) { ++ return 0; ++ } ++ + for (i = 0; i < nsaddrs; i++) { + fw->ip.src.s_addr = saddrs[i].s_addr; + fw->ip.smsk.s_addr = smasks[i].s_addr; +@@ -573,6 +577,10 @@ replace_entry(const xt_chainlabel chain, + int verbose, + struct xtc_handle *handle) + { ++ if (!fw) { ++ return 0; ++ } ++ + fw->ip.src.s_addr = saddr->s_addr; + fw->ip.dst.s_addr = daddr->s_addr; + fw->ip.smsk.s_addr = smask->s_addr; +@@ -599,6 +607,10 @@ insert_entry(const xt_chainlabel chain, + unsigned int i, j; + int ret = 1; + ++ if (!fw) { ++ return 0; ++ } ++ + for (i = 0; i < nsaddrs; i++) { + fw->ip.src.s_addr = saddrs[i].s_addr; + fw->ip.smsk.s_addr = smasks[i].s_addr; +@@ -666,6 +678,10 @@ delete_entry(const xt_chainlabel chain, + int ret = 1; + unsigned char *mask; + ++ if (!fw) { ++ return 0; ++ } ++ + mask = make_delete_mask(matches, target); + for (i = 0; i < nsaddrs; i++) { + fw->ip.src.s_addr = saddrs[i].s_addr; +@@ -696,6 +712,10 @@ check_entry(const xt_chainlabel chain, struct ipt_entry *fw, + int ret = 1; + unsigned char *mask; + ++ if (!fw) { ++ return 0; ++ } ++ + mask = make_delete_mask(matches, target); + for (i = 0; i < nsaddrs; i++) { + fw->ip.src.s_addr = saddrs[i].s_addr; +-- +2.27.0 + diff --git a/iptables.spec b/iptables.spec index b2d075ef6a903dd80c03fffed59afe96fcd84591..b49d96aa5edbfdfd11303afd63c93ca09a282147 100644 --- a/iptables.spec +++ b/iptables.spec @@ -2,7 +2,7 @@ %global legacy_actions %{_libexecdir}/initscripts/legacy-actions Name: iptables Version: 1.8.7 -Release: 2 +Release: 3 Summary: IP packet filter administration utilities License: GPLv2 and Artistic Licence 2.0 and ISC URL: https://www.netfilter.org/ @@ -315,6 +315,12 @@ fi %{_mandir}/man8/xtables-legacy* %changelog +* Fri Nov 26 2021 xihaochen - 1.8.7-3 +- Type:bugfix +- ID:NA +- SUG:restart +- DESC:add check fw in entry + * Mon Aug 02 2021 chenyanpanHW - 1.8.7-2 - DESC: delete -S git from %autosetup, and delete BuildRequires git