diff options
author | Steffen Jaeckel <jaeckel-floss@eyet-services.de> | 2023-03-10 14:51:43 +0100 |
---|---|---|
committer | Steffen Jaeckel <jaeckel-floss@eyet-services.de> | 2023-03-11 15:05:03 +0100 |
commit | 2925e85cd6e6c63ce5ba716e5de9d24066e9aebc (patch) | |
tree | 735f9d7daca57d706f2f826a2ff00de8a7e1554a /tests/unittests | |
parent | e99c4b7128f5c95cf8665ef969848defa0d3bbd7 (diff) | |
download | profani-tty-2925e85cd6e6c63ce5ba716e5de9d24066e9aebc.tar.gz |
add test-case for #1761
Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Diffstat (limited to 'tests/unittests')
-rw-r--r-- | tests/unittests/test_common.c | 22 | ||||
-rw-r--r-- | tests/unittests/test_common.h | 1 | ||||
-rw-r--r-- | tests/unittests/unittests.c | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/tests/unittests/test_common.c b/tests/unittests/test_common.c index fa5dd59e..3812cccb 100644 --- a/tests/unittests/test_common.c +++ b/tests/unittests/test_common.c @@ -536,6 +536,28 @@ _lists_equal(GSList* a, GSList* b) } void +prof_occurrences_of_large_message_tests(void** state) +{ + GSList* actual = NULL; + GSList* expected = NULL; + /* use this with the old implementation to create a segfault + * const size_t haystack_sz = 1024 * 1024; + */ + const size_t haystack_sz = 1024; + size_t haystack_cur = 0; + char* haystack = malloc(haystack_sz); + const char needle[] = "needle "; + while (haystack_sz - haystack_cur > sizeof(needle)) { + memcpy(&haystack[haystack_cur], needle, sizeof(needle) - 1); + expected = g_slist_append(expected, GINT_TO_POINTER(haystack_cur)); + haystack_cur += sizeof(needle) - 1; + } + assert_true(_lists_equal(prof_occurrences("needle", haystack, 0, FALSE, &actual), expected)); + g_slist_free(actual); + g_slist_free(expected); +} + +void prof_partial_occurrences_tests(void** state) { GSList* actual = NULL; diff --git a/tests/unittests/test_common.h b/tests/unittests/test_common.h index 46d990d9..ffcc6c9d 100644 --- a/tests/unittests/test_common.h +++ b/tests/unittests/test_common.h @@ -31,5 +31,6 @@ void strip_quotes_strips_last(void** state); void strip_quotes_strips_both(void** state); void prof_partial_occurrences_tests(void** state); void prof_whole_occurrences_tests(void** state); +void prof_occurrences_of_large_message_tests(void** state); void unique_filename_from_url_td(void** state); void format_call_external_argv_td(void** state); diff --git a/tests/unittests/unittests.c b/tests/unittests/unittests.c index e2293004..2724aaa2 100644 --- a/tests/unittests/unittests.c +++ b/tests/unittests/unittests.c @@ -620,6 +620,7 @@ main(int argc, char* argv[]) unit_test(prof_partial_occurrences_tests), unit_test(prof_whole_occurrences_tests), + unit_test(prof_occurrences_of_large_message_tests), unit_test(returns_no_commands), unit_test(returns_commands), |