From 2925e85cd6e6c63ce5ba716e5de9d24066e9aebc Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Fri, 10 Mar 2023 14:51:43 +0100 Subject: add test-case for #1761 Signed-off-by: Steffen Jaeckel --- tests/unittests/test_common.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'tests/unittests/test_common.c') 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 @@ -535,6 +535,28 @@ _lists_equal(GSList* a, GSList* b) return TRUE; } +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) { -- cgit 1.4.1-2-gfad0