Fix ASAN failure in bitrev_test

Previously while testing osmo_nibble_shift_left_unal() following error was
triggered by AddressSanitizer upon offs == 12 and the last sh_chk line, i.e.
shift left of 12 nibbles from in2:

==3890== ERROR: AddressSanitizer: stack-buffer-overflow on address 0xbff5b5b6 at pc 0xb6186862 bp 0xbff5b4a8 sp 0xbff5b49c
READ of size 1 at 0xbff5b5b6 thread T0
    #0 0xb6186861 (/home/msuraev/source/gsm/libosmocore/src/.libs/libosmocore.so.7.0.0+0xc861)
    #1 0x8049d8b (/home/msuraev/source/gsm/libosmocore/tests/bits/.libs/lt-bitrev_test+0x8049d8b)
    #2 0x804a9d1 (/home/msuraev/source/gsm/libosmocore/tests/bits/.libs/lt-bitrev_test+0x804a9d1)
    #3 0xb5fe3af2 (/lib/i386-linux-gnu/libc-2.19.so+0x19af2)
    #4 0x8048a30 (/home/msuraev/source/gsm/libosmocore/tests/bits/.libs/lt-bitrev_test+0x8048a30)
Address 0xbff5b5b6 is located at offset 38 in frame <main> of T0's stack:
  This frame has 3 object(s):
    [32, 38) 'in2'
    [96, 104) 'out'
    [160, 168) 'in1'

The reason is incorrect range in test cycle. Fix it and adjust test
output accordingly.

Tweaked-by: Neels Hofmeyr <nhofmeyr@sysmocom.de>
Fixes: OW#1589 ("undefined behavior in libosmocore triggered by tests")
Change-Id: I5eb3f600290c05b4ab9ac2450a28d616e6b415fd
This commit is contained in:
Max 2016-09-20 16:33:50 +02:00 committed by Neels Hofmeyr
parent e31cf8057f
commit 4fd6023b03
2 changed files with 3 additions and 3 deletions

View File

@ -297,7 +297,9 @@ int main(int argc, char **argv)
sh_chk(in1, ARRAY_SIZE(in1), offs, true);
sh_chk(in1, ARRAY_SIZE(in1), offs, false);
sh_chk(in2, ARRAY_SIZE(in2), offs, true);
sh_chk(in2, ARRAY_SIZE(in2), offs, false);
/* in2 is too short to shift left 12 nibbles */
if (offs < 12)
sh_chk(in2, ARRAY_SIZE(in2), offs, false);
}
return 0;
}

View File

@ -156,5 +156,3 @@ running nibble tests...
OUT: 00dcafedeadb
[6] R IN: b00bbabeface, nibble 12:
OUT: 0b00bbabefac
[6] L IN: b00bbabeface, nibble 12:
OUT: 00bbabeface0