0003ea9c45
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>
33 lines
710 B
Perl
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.
|