diff options
author | Alin Nastac <alin.nastac@gmail.com> | 2020-05-07 13:14:06 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2020-06-03 19:03:55 +0200 |
commit | 050816af322f0a8ed8dd04d620f42cb3d0a1ac06 (patch) | |
tree | 7760a0e7288ca4045947e87aac413cf244240ecf | |
parent | f62a52b105fdd3aa12cc073b2847140d5b64261f (diff) | |
download | firewall3-050816af322f0a8ed8dd04d620f42cb3d0a1ac06.tar.gz |
redirects: fix segmentation fault
Fixes 9d7f49df47ad ("redurects: add support to define multiple zones for dnat reflection rules")
Signed-off-by: Alin Nastac <alin.nastac@gmail.com>
-rw-r--r-- | redirects.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/redirects.c b/redirects.c index 775fade..9a827b6 100644 --- a/redirects.c +++ b/redirects.c @@ -716,9 +716,8 @@ expand_redirect(struct fw3_ipt_handle *handle, struct fw3_state *state, return; ext_addrs = fw3_resolve_zone_addresses(redir->_src, &redir->ip_dest); - if (!ext_addrs) - goto out; + return; list_for_each_entry(ext_addr, ext_addrs, list) { @@ -741,6 +740,9 @@ expand_redirect(struct fw3_ipt_handle *handle, struct fw3_state *state, continue; int_addrs = fw3_resolve_zone_addresses(zone, NULL); + if (!int_addrs) + continue; + list_for_each_entry(int_addr, int_addrs, list) { if (!fw3_is_family(int_addr, handle->family)) @@ -763,12 +765,12 @@ expand_redirect(struct fw3_ipt_handle *handle, struct fw3_state *state, &ref_addr, int_addr, ext_addr, reflection_zone); } } + + fw3_free_list(int_addrs); } } -out: fw3_free_list(ext_addrs); - fw3_free_list(int_addrs); } void |