Astobj2: Correctly treat hash_fn returning INT_MIN
authorIvan Poddubny <ivan.poddubny@gmail.com>
Sun, 24 May 2015 18:47:16 +0000 (21:47 +0300)
committerIvan Poddubny <ivan.poddubny@gmail.com>
Mon, 25 May 2015 07:18:58 +0000 (02:18 -0500)
commit23a798fecce1cf0fb64edc54953dc6bf1a49a402
treecfd670e52c887d8a4def616f77d515c50f9c14df
parentf66c41e668429b9a07dfdf30832c02ddc223f4a4
Astobj2: Correctly treat hash_fn returning INT_MIN

The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0.
However, abs(INT_MIN) = INT_MIN and is still negative, as well as
abs(INT_MIN) % num_buckets, and as a result this led to a crash.

One way to trigger the bug is using host=::80 or 0.0.0.128 in peer
configuration section in chan_sip or chan_iax.

This patch takes the remainder before applying abs, so that bucket
number is always in range.

ASTERISK-25100 #close
Reported by: Mark Petersen

Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899
main/astobj2_hash.c