summaryrefslogtreecommitdiff
path: root/epan/address.h
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2016-06-11 19:13:14 -0700
committerGuy Harris <guy@alum.mit.edu>2016-06-12 02:13:41 +0000
commit5416a34d57d1ac488eaad2379b366b6c8084ab29 (patch)
tree7b1ff69cb43717f34180cee45a267a9c6d2973e7 /epan/address.h
parent24f02dafcd80a10558bf5afeed07a0989a6d7cc6 (diff)
downloadwireshark-5416a34d57d1ac488eaad2379b366b6c8084ab29.tar.gz
Handle zero-length addresses in cmp_address().
Don't compare the data if there's none to compare. Change-Id: Ib0e3541e448127869d19afddfc71bb441dba5874 Reviewed-on: https://code.wireshark.org/review/15840 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/address.h')
-rw-r--r--epan/address.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/epan/address.h b/epan/address.h
index 31eef6a158..ebc8017d93 100644
--- a/epan/address.h
+++ b/epan/address.h
@@ -199,6 +199,14 @@ cmp_address(const address *addr1, const address *addr2) {
if (addr1->type < addr2->type) return -1;
if (addr1->len > addr2->len) return 1;
if (addr1->len < addr2->len) return -1;
+ if (addr1->len == 0) {
+ /*
+ * memcmp(NULL, NULL, 0) is *not* guaranteed to work, so
+ * if both addresses are zero-length, don't compare them
+ * (there's nothing to compare, so they're equal).
+ */
+ return 0;
+ }
return memcmp(addr1->data, addr2->data, addr1->len);
}