From 75d89f8e12f7fe39f394b54a0453baced6c36417 Mon Sep 17 00:00:00 2001 From: Ivan Mogilko Date: Fri, 13 Oct 2023 20:43:19 +0300 Subject: [PATCH] Fix potential access violation in testautomation_clipboard.c --- test/testautomation_clipboard.c | 80 ++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/test/testautomation_clipboard.c b/test/testautomation_clipboard.c index 5b1c4a4f39..7e1ae3a9a5 100644 --- a/test/testautomation_clipboard.c +++ b/test/testautomation_clipboard.c @@ -176,13 +176,18 @@ static int clipboard_testClipboardDataFunctions(void *arg) "Verify has test text data, expected SDL_TRUE, got SDL_FALSE"); text = SDL_GetClipboardData(test_mime_types[TEST_MIME_TYPE_TEXT], &size); SDLTest_AssertCheck( - text && text[size] == '\0', - "Verify test text data, expected null termination, got %c", - text[size]); - SDLTest_AssertCheck( - text && SDL_strcmp(text, expected_text) == 0, - "Verify test text data, expected \"%s\", got \"%s\"", - expected_text, text); + text != NULL, + "Verify has test text data, expected valid result, got NULL"); + if (text) { + SDLTest_AssertCheck( + text[size] == '\0', + "Verify test text data, expected null termination, got %c", + text[size]); + SDLTest_AssertCheck( + SDL_strcmp(text, expected_text) == 0, + "Verify test text data, expected \"%s\", got \"%s\"", + expected_text, text); + } SDLTest_AssertCheck( size == SDL_strlen(expected_text), "Verify test text size, expected %d, got %d", @@ -196,13 +201,18 @@ static int clipboard_testClipboardDataFunctions(void *arg) "Verify has test text data, expected SDL_TRUE, got SDL_FALSE"); text = SDL_GetClipboardData(test_mime_types[TEST_MIME_TYPE_CUSTOM_TEXT], &size); SDLTest_AssertCheck( - text && text[size] == '\0', - "Verify test text data, expected null termination, got %c", - text[size]); - SDLTest_AssertCheck( - text && SDL_strcmp(text, expected_text) == 0, - "Verify test text data, expected \"%s\", got \"%s\"", - expected_text, text); + text != NULL, + "Verify has test text data, expected valid result, got NULL"); + if (text) { + SDLTest_AssertCheck( + text[size] == '\0', + "Verify test text data, expected null termination, got %c", + text[size]); + SDLTest_AssertCheck( + SDL_strcmp(text, expected_text) == 0, + "Verify test text data, expected \"%s\", got \"%s\"", + expected_text, text); + } SDLTest_AssertCheck( size == SDL_strlen(expected_text), "Verify test text size, expected %d, got %d", @@ -215,7 +225,7 @@ static int clipboard_testClipboardDataFunctions(void *arg) "Verify has test text data, expected SDL_TRUE, got SDL_FALSE"); data = SDL_GetClipboardData(test_mime_types[TEST_MIME_TYPE_DATA], &size); SDLTest_AssertCheck( - SDL_memcmp(data, test_data1.data, test_data1.data_size) == 0, + data && SDL_memcmp(data, test_data1.data, test_data1.data_size) == 0, "Verify test data"); SDLTest_AssertCheck( size == test_data1.data_size, @@ -278,13 +288,18 @@ static int clipboard_testClipboardDataFunctions(void *arg) "Verify has test text data, expected SDL_TRUE, got SDL_FALSE"); text = SDL_GetClipboardData(test_mime_types[TEST_MIME_TYPE_TEXT], &size); SDLTest_AssertCheck( - text && text[size] == '\0', - "Verify test text data, expected null termination, got %c", - text[size]); - SDLTest_AssertCheck( - text && SDL_strcmp(text, expected_text) == 0, - "Verify test text data, expected \"%s\", got \"%s\"", - expected_text, text); + text != NULL, + "Verify has test text data, expected valid result, got NULL"); + if (text) { + SDLTest_AssertCheck( + text[size] == '\0', + "Verify test text data, expected null termination, got %c", + text[size]); + SDLTest_AssertCheck( + SDL_strcmp(text, expected_text) == 0, + "Verify test text data, expected \"%s\", got \"%s\"", + expected_text, text); + } SDLTest_AssertCheck( size == SDL_strlen(expected_text), "Verify test text size, expected %d, got %d", @@ -298,13 +313,18 @@ static int clipboard_testClipboardDataFunctions(void *arg) "Verify has test text data, expected SDL_TRUE, got SDL_FALSE"); text = SDL_GetClipboardData(test_mime_types[TEST_MIME_TYPE_CUSTOM_TEXT], &size); SDLTest_AssertCheck( - text && text[size] == '\0', - "Verify test text data, expected null termination, got %c", - text[size]); - SDLTest_AssertCheck( - text && SDL_strcmp(text, expected_text) == 0, - "Verify test text data, expected \"%s\", got \"%s\"", - expected_text, text); + text != NULL, + "Verify has test text data, expected valid result, got NULL"); + if (text) { + SDLTest_AssertCheck( + text[size] == '\0', + "Verify test text data, expected null termination, got %c", + text[size]); + SDLTest_AssertCheck( + SDL_strcmp(text, expected_text) == 0, + "Verify test text data, expected \"%s\", got \"%s\"", + expected_text, text); + } SDLTest_AssertCheck( size == SDL_strlen(expected_text), "Verify test text size, expected %d, got %d", @@ -313,7 +333,7 @@ static int clipboard_testClipboardDataFunctions(void *arg) data = SDL_GetClipboardData(test_mime_types[TEST_MIME_TYPE_DATA], &size); SDLTest_AssertCheck( - SDL_memcmp(data, test_data2.data, test_data2.data_size) == 0, + data && SDL_memcmp(data, test_data2.data, test_data2.data_size) == 0, "Verify test data"); SDLTest_AssertCheck( size == test_data2.data_size,