Fix flaky strtok.c test.

Asserting the result of strtok when we expect delimiter overflow is
flaky, the result depends on the random state of memory right after the
delimiters.

llvm-svn: 298743
This commit is contained in:
Alex Shlyapnikov 2017-03-24 21:43:56 +00:00
parent 73bac6a2f0
commit f51fafde1e
1 changed files with 1 additions and 6 deletions

View File

@ -27,7 +27,7 @@
#include <string.h>
#include <sanitizer/asan_interface.h>
// Check that we find overflows in the delimiters on the first call
// Check that we find overflows in the delimiters on the first call
// with strict_string_checks.
void test1() {
char *token;
@ -36,7 +36,6 @@ void test1() {
__asan_poison_memory_region ((char *)&token_delimiter[1], 2);
token = strtok(s, token_delimiter);
// CHECK1:'token_delimiter' <== Memory access at offset {{[0-9]+}} partially overflows this variable
assert(strcmp(token, "a") == 0);
}
// Check that we find overflows in the delimiters on the second call (str == NULL)
@ -50,7 +49,6 @@ void test2() {
__asan_poison_memory_region ((char *)&token_delimiter[1], 2);
token = strtok(NULL, token_delimiter);
// CHECK2:'token_delimiter' <== Memory access at offset {{[0-9]+}} partially overflows this variable
assert(strcmp(token, "c") == 0);
}
// Check that we find overflows in the string (only on the first call) with strict_string_checks.
@ -61,7 +59,6 @@ void test3() {
__asan_poison_memory_region ((char *)&s[3], 2);
token = strtok(s, token_delimiter);
// CHECK3:'s' <== Memory access at offset {{[0-9]+}} partially overflows this variable
assert(token == s);
}
// Check that we do not crash when strtok returns NULL with strict_string_checks.
@ -82,7 +79,6 @@ void test5() {
__asan_poison_memory_region ((char *)&token_delimiter[1], 2);
token = strtok(s, token_delimiter);
// CHECK5:'s' <== Memory access at offset {{[0-9]+}} partially overflows this variable
assert(token == s);
}
// Check that we find overflows in the delimiters (only on the first call) with !strict_string_checks.
@ -93,7 +89,6 @@ void test6() {
__asan_poison_memory_region ((char *)&token_delimiter[1], 2);
token = strtok(s, &token_delimiter[1]);
// CHECK6:'token_delimiter' <== Memory access at offset {{[0-9]+}} overflows this variable
assert(strcmp(token, "abc") == 0);
}
int main(int argc, char **argv) {