libubox/tests/cram/test_base64.t
Petr Štetiar 0003ea9c45 base64: fix possible null pointer dereference
clang-10 analyzer reports following:

 base64.c:325:20: warning: Array access (from variable 'target') results in a null pointer dereference
                 target[tarindex] = 0;
                 ~~~~~~           ^

and prepared test case confirms it:

 Invalid write of size 1
    at 0x4E4463F: b64_decode (base64.c:325)
    by 0x40088C: test_invalid_inputs (tests/test-base64.c:26)
    by 0x40088C: main (tests/test-base64.c:32)
  Address 0x1 is not stack'd, malloc'd or (recently) free'd

 Process terminating with default action of signal 11 (SIGSEGV)
  Access not within mapped region at address 0x1
    at 0x4E4463F: b64_decode (base64.c:325)
    by 0x40088C: test_invalid_inputs (tests/test-base64.c:26)
    by 0x40088C: main (tests/test-base64.c:32)

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2019-11-24 13:26:58 +01:00

33 lines
710 B
Perl

set test bin path:
$ [ -n "$TEST_BIN_DIR" ] && export PATH="$TEST_BIN_DIR:$PATH"
check that base64 is producing expected results:
$ valgrind --quiet --leak-check=full test-b64
0
4 Zg==
4 Zm8=
4 Zm9v
8 Zm9vYg==
8 Zm9vYmE=
8 Zm9vYmFy
0
1 f
2 fo
3 foo
4 foob
5 fooba
6 foobar
check that b64_encode and b64_decode assert invalid input
$ alias check="egrep '(dumped|Assertion)' | sed 's;.*\(b64_.*code\).*\(Assertion.*$\);\1: \2;' | LC_ALL=C sort"
$ test-b64_decode 2>&1 | check
Aborted (core dumped)
b64_decode: Assertion `dest && targsize > 0' failed.
$ test-b64_encode 2>&1 | check
Aborted (core dumped)
b64_encode: Assertion `dest && targsize > 0' failed.