diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-06-11 19:13:14 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-06-12 02:13:41 +0000 |
commit | 5416a34d57d1ac488eaad2379b366b6c8084ab29 (patch) | |
tree | 7b1ff69cb43717f34180cee45a267a9c6d2973e7 /epan/address.h | |
parent | 24f02dafcd80a10558bf5afeed07a0989a6d7cc6 (diff) |
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.h | 8 |
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); } |