diff options
author | Peter Wu <peter@lekensteyn.nl> | 2016-04-12 08:45:20 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2016-04-12 08:21:17 +0000 |
commit | bee73f5d049c5436ffff87a7e0c5eab600e8df28 (patch) | |
tree | 550a12555a7e1bab80a363ad1550b92d20443a83 | |
parent | f9b688226a71c1ced36ad0b70bb4796d1a5c12b3 (diff) |
sshdump,ciscodump: fix local addresses discovery
Fixes a NULL-deref when no interface addresses are discovered.
Remove NULL interface from list (an empty GSList is represented by NULL
while g_slist_alloc returns a list with a single NULL data).
Change-Id: I2eded40bb697e051445a526d1f34d8a50ef9ccd4
Reviewed-on: https://code.wireshark.org/review/14888
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
-rw-r--r-- | extcap/ciscodump.c | 4 | ||||
-rw-r--r-- | extcap/sshdump.c | 4 | ||||
-rw-r--r-- | wsutil/interface.c | 2 |
3 files changed, 4 insertions, 6 deletions
diff --git a/extcap/ciscodump.c b/extcap/ciscodump.c index 74df9475d5..23a8d1b35c 100644 --- a/extcap/ciscodump.c +++ b/extcap/ciscodump.c @@ -110,10 +110,10 @@ static char* interfaces_list_to_filter(GSList* interfaces, unsigned int remote_p g_string_append_printf(filter, "deny tcp host %s any eq %u, deny tcp any eq %u host %s", (char*)interfaces->data, remote_port, remote_port, (char*)interfaces->data); cur = g_slist_next(interfaces); - while (cur->next != NULL) { + while (cur) { g_string_append_printf(filter, ", deny tcp host %s any eq %u, deny tcp any eq %u host %s", (char*)cur->data, remote_port, remote_port, (char*)cur->data); - cur = cur->next; + cur = g_slist_next(cur); } g_string_append_printf(filter, ", permit ip any any"); } diff --git a/extcap/sshdump.c b/extcap/sshdump.c index 77dc11ad04..92ea9fded0 100644 --- a/extcap/sshdump.c +++ b/extcap/sshdump.c @@ -268,9 +268,9 @@ static char* interfaces_list_to_filter(GSList* interfaces, unsigned int remote_p } else { g_string_append_printf(filter, "not ((host %s", (char*)interfaces->data); cur = g_slist_next(interfaces); - while (cur->next != NULL) { + while (cur) { g_string_append_printf(filter, " or host %s", (char*)cur->data); - cur = cur->next; + cur = g_slist_next(cur); } g_string_append_printf(filter, ") and port %u)", remote_port); } diff --git a/wsutil/interface.c b/wsutil/interface.c index af48b29d87..0e0b7c4056 100644 --- a/wsutil/interface.c +++ b/wsutil/interface.c @@ -50,8 +50,6 @@ GSList *local_interfaces_to_list(void) goto end; } - interfaces = g_slist_alloc(); - for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) { if (ifa->ifa_addr == NULL) continue; |