From f4fc0f6db80e6327f79d9e889edba02f932ecdf8 Mon Sep 17 00:00:00 2001 From: Yonggoo Kang Date: Fri, 24 May 2024 14:18:56 +0900 Subject: [PATCH] Resolve DEREF_OF_NULL.RET.ALLOC.MINOR issue Change-Id: I4a1318c4462408a420ce0b225b45cbe3f178a271 --- tests/client-request-test.cpp | 190 +++++++++++++++++------------------------ tests/webauthn-client-test.cpp | 36 ++++++++ 2 files changed, 114 insertions(+), 112 deletions(-) diff --git a/tests/client-request-test.cpp b/tests/client-request-test.cpp index 19f251d..420c4bc 100644 --- a/tests/client-request-test.cpp +++ b/tests/client-request-test.cpp @@ -273,10 +273,19 @@ TEST_F(ClientRequestTest, request_to_not_supported_server_N) int retVal = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *callbacks = nullptr; callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(callbacks); + if (!callbacks) + return ; callbacks->qrcode_callback = test_cb_display_qrcode; callbacks->response_callback = test_cb_mc_response; callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(userdata); + if (!userdata) + { + free(callbacks); + return ; + } userdata->test_data = (char*)("user data"); userdata->test_int = 999; userdata->called_qr = false; @@ -317,10 +326,19 @@ TEST_F(ClientRequestTest, MC_with_LD_and_not_call_QR_callback_P) int retVal = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *callbacks = nullptr; callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(callbacks); + if (!callbacks) + return ; callbacks->qrcode_callback = test_cb_display_qrcode; callbacks->response_callback = test_cb_mc_response; callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(userdata); + if (!userdata) + { + free(callbacks); + return ; + } userdata->test_data = (char*)("user data"); userdata->test_int = 999; userdata->called_qr = false; @@ -362,10 +380,19 @@ TEST_F(ClientRequestTest, MC_without_LD_and_call_QR_callback_P) int retVal = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *callbacks = nullptr; callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(callbacks); + if (!callbacks) + return ; callbacks->qrcode_callback = test_cb_display_qrcode; callbacks->response_callback = test_cb_mc_response; callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(userdata); + if (!userdata) + { + free(callbacks); + return ; + } userdata->test_data = (char*)("user data"); userdata->test_int = 999; userdata->called_qr = false; @@ -410,10 +437,19 @@ TEST_F(ClientRequestTest, GA_with_LD_and_not_call_QR_callback_P) int retVal = WAUTHN_ERROR_NONE; wauthn_ga_callbacks_s *callbacks = nullptr; callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(callbacks); + if (!callbacks) + return ; callbacks->qrcode_callback = test_cb_display_qrcode; callbacks->response_callback = test_cb_ga_response; callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(userdata); + if (!userdata) + { + free(callbacks); + return ; + } userdata->test_data = (char*)("user data"); userdata->test_int = 999; userdata->called_qr = false; @@ -457,10 +493,19 @@ TEST_F(ClientRequestTest, GA_without_LD_and_call_QR_callback_P) int retVal = WAUTHN_ERROR_NONE; wauthn_ga_callbacks_s *callbacks = nullptr; callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(callbacks); + if (!callbacks) + return ; callbacks->qrcode_callback = test_cb_display_qrcode; callbacks->response_callback = test_cb_ga_response; callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(userdata); + if (!userdata) + { + free(callbacks); + return ; + } userdata->test_data = (char*)("user data"); userdata->test_int = 999; userdata->called_qr = false; @@ -504,10 +549,19 @@ TEST_F(ClientRequestTest, not_allowed_N) int retVal = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *mc_callbacks = nullptr; mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(mc_callbacks); + if (!mc_callbacks) + return ; mc_callbacks->qrcode_callback = test_cb_display_qrcode; mc_callbacks->response_callback = test_cb_mc_response; mc_callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *mc_userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(mc_userdata); + if (!mc_userdata) + { + free(mc_callbacks); + return ; + } mc_userdata->test_data = (char*)("user data"); mc_userdata->test_int = 999; mc_userdata->called_qr = false; @@ -524,10 +578,25 @@ TEST_F(ClientRequestTest, not_allowed_N) wauthn_ga_callbacks_s *ga_callbacks = nullptr; ga_callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(ga_callbacks); + if (!ga_callbacks) + { + free(mc_callbacks); + free(mc_userdata); + return ; + } ga_callbacks->qrcode_callback = test_cb_display_qrcode; ga_callbacks->response_callback = test_cb_ga_response; ga_callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *ga_userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(ga_userdata); + if (!ga_userdata) + { + free(mc_callbacks); + free(mc_userdata); + free(ga_callbacks); + return ; + } ga_userdata->test_data = (char*)("user data"); ga_userdata->test_int = 999; ga_userdata->called_qr = false; @@ -576,10 +645,19 @@ TEST_F(ClientRequestTest, cancel_P) int retVal = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *mc_callbacks = nullptr; mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(mc_callbacks); + if (!mc_callbacks) + return ; mc_callbacks->qrcode_callback = test_cb_display_qrcode; mc_callbacks->response_callback = test_cb_mc_response; mc_callbacks->linked_data_callback = test_cb_update_linked_data; test_user_data_s *mc_userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); + EXPECT_TRUE(mc_userdata); + if (!mc_userdata) + { + free(mc_callbacks); + return ; + } mc_userdata->test_data = (char*)("user data"); mc_userdata->test_int = 999; mc_userdata->called_qr = false; @@ -618,116 +696,4 @@ TEST_F(ClientRequestTest, cancel_P) EXPECT_EQ(ret, 0); } -/* - * Holding test for multiple update linked data until webauthn-ble's update - * for handle the update_linked_data callback -TEST_F(ClientRequestTest, MC_multiple_update_linked_data_P) -{ - int ret = 1; - WA::SocketManager manager; - try{ - auto service = std::make_unique(std::make_shared()); - manager.RegisterSocketService(std::move(service)); - SocketManagerLoop loop(manager); - { - int retVal = WAUTHN_ERROR_NONE; - wauthn_mc_callbacks_s *mc_callbacks = nullptr; - mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); - mc_callbacks->qrcode_callback = test_cb_display_qrcode; - mc_callbacks->response_callback = test_cb_mc_response; - mc_callbacks->linked_data_callback = test_cb_update_linked_data; - test_user_data_s *mc_userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); - mc_userdata->test_data = (char*)("user data"); - mc_userdata->test_int = 999; - mc_userdata->called_qr = false; - mc_userdata->called_response = false; - g_target_times_update_linked_data = 5; - mc_userdata->times_update_linked_data = 0; - mc_callbacks->user_data = mc_userdata; - retVal = wauthn_process(&TestCommonData::clientData, - &TestCommonData::pubkeyCredCreationOptionsNoLD, mc_callbacks); - - EXPECT_EQ(retVal, WAUTHN_ERROR_NONE) - << "[wauthn_process] failed. " - << "retVal=" << wauthn_error_to_string(ret) << std::endl; - - // Waiting for called the callbacks - sleep(g_target_times_update_linked_data + 5); - - EXPECT_EQ(mc_userdata->called_qr, true) - << "The QR callback should be called" << std::endl; - EXPECT_EQ(mc_userdata->called_response, true) - << "The response callback should be called" << std::endl; - EXPECT_EQ(g_target_times_update_linked_data, - mc_userdata->times_update_linked_data) - << "The update_linked_data callback should be called for setted times" - << std::endl; - - free(mc_userdata); - free(mc_callbacks); - } - sleep(1); - ret = 0; - } catch (...) { - std::cout << "Error in starting service, unknown exception occurred" << std::endl; - ret = -1; - } - EXPECT_EQ(ret, 0); -} - -TEST_F(ClientRequestTest, GA_multiple_update_linked_data_P) -{ - int ret = 1; - WA::SocketManager manager; - try{ - auto service = std::make_unique(std::make_shared()); - manager.RegisterSocketService(std::move(service)); - SocketManagerLoop loop(manager); - { - int retVal = WAUTHN_ERROR_NONE; - wauthn_ga_callbacks_s *ga_callbacks = nullptr; - ga_callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); - ga_callbacks->qrcode_callback = test_cb_display_qrcode; - ga_callbacks->response_callback = test_cb_ga_response; - ga_callbacks->linked_data_callback = test_cb_update_linked_data; - test_user_data_s *ga_userdata = (test_user_data_s*) calloc(1, sizeof(test_user_data_s)); - ga_userdata->test_data = (char*)("user data"); - ga_userdata->test_int = 999; - ga_userdata->called_qr = false; - ga_userdata->called_response = false; - g_target_times_update_linked_data = 5; - ga_userdata->times_update_linked_data = 0; - ga_callbacks->user_data = ga_userdata; - retVal = wauthn_process(&TestCommonData::clientData, - &TestCommonData::pubkeyCredRequestOptionsNoLD, ga_callbacks); - - EXPECT_EQ(retVal, WAUTHN_ERROR_NONE) - << "[wauthn_process] failed. " - << "retVal=" << wauthn_error_to_string(ret) << std::endl; - - // Waiting for called the callbacks - sleep(g_target_times_update_linked_data + 5); - - EXPECT_EQ(ga_userdata->called_qr, true) - << "The QR callback should be called" << std::endl; - EXPECT_EQ(ga_userdata->called_response, true) - << "The response callback should be called" << std::endl; - EXPECT_EQ(g_target_times_update_linked_data, - ga_userdata->times_update_linked_data) - << "The update_linked_data callback should be called for setted times" - << std::endl; - - free(ga_userdata); - free(ga_callbacks); - } - sleep(1); - ret = 0; - } catch (...) { - std::cout << "Error in starting service, unknown exception occurred" << std::endl; - ret = -1; - } - EXPECT_EQ(ret, 0); -} -*/ - } // namespace WebAuthn diff --git a/tests/webauthn-client-test.cpp b/tests/webauthn-client-test.cpp index 0e141bc..2afc825 100644 --- a/tests/webauthn-client-test.cpp +++ b/tests/webauthn-client-test.cpp @@ -45,6 +45,9 @@ TEST_F(WebAuthnTest, invalid_client_data_N) wauthn_mc_callbacks_s *mc_callbacks = nullptr; mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(mc_callbacks); + if (!mc_callbacks) + return ; mc_callbacks->qrcode_callback = test_cb_display_qrcode; mc_callbacks->response_callback = test_cb_mc_response; mc_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -57,6 +60,12 @@ TEST_F(WebAuthnTest, invalid_client_data_N) ret = WAUTHN_ERROR_NONE; wauthn_ga_callbacks_s *ga_callbacks = nullptr; ga_callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(ga_callbacks); + if (!ga_callbacks) + { + free(mc_callbacks); + return ; + } ga_callbacks->qrcode_callback = test_cb_display_qrcode; ga_callbacks->response_callback = test_cb_ga_response; ga_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -76,6 +85,9 @@ TEST_F(WebAuthnTest, invalid_options_N) wauthn_mc_callbacks_s *mc_callbacks = nullptr; mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(mc_callbacks); + if (!mc_callbacks) + return ; mc_callbacks->qrcode_callback = test_cb_display_qrcode; mc_callbacks->response_callback = test_cb_mc_response; mc_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -88,6 +100,12 @@ TEST_F(WebAuthnTest, invalid_options_N) ret = WAUTHN_ERROR_NONE; wauthn_ga_callbacks_s *ga_callbacks = nullptr; ga_callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(ga_callbacks); + if (!ga_callbacks) + { + free(mc_callbacks); + return ; + } ga_callbacks->qrcode_callback = test_cb_display_qrcode; ga_callbacks->response_callback = test_cb_ga_response; ga_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -112,6 +130,9 @@ TEST_F(WebAuthnTest, invalid_callbacks_N) ret = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *mc_callbacks = nullptr; mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(mc_callbacks); + if (!mc_callbacks) + return ; mc_callbacks->qrcode_callback = test_cb_display_qrcode; mc_callbacks->response_callback = nullptr; mc_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -137,6 +158,12 @@ TEST_F(WebAuthnTest, invalid_callbacks_N) ret = WAUTHN_ERROR_NONE; wauthn_ga_callbacks_s *ga_callbacks = nullptr; ga_callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(ga_callbacks); + if (!ga_callbacks) + { + free(mc_callbacks); + return ; + } ga_callbacks->qrcode_callback = test_cb_display_qrcode; ga_callbacks->response_callback = nullptr; ga_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -161,6 +188,9 @@ TEST_F(WebAuthnTest, miss_qr_callback_without_linked_data_N) int ret = WAUTHN_ERROR_NONE; wauthn_mc_callbacks_s *mc_callbacks = nullptr; mc_callbacks = (wauthn_mc_callbacks_s*) calloc(1, sizeof(wauthn_mc_callbacks_s)); + EXPECT_TRUE(mc_callbacks); + if (!mc_callbacks) + return ; mc_callbacks->qrcode_callback = nullptr; mc_callbacks->response_callback = test_cb_mc_response; mc_callbacks->linked_data_callback = test_cb_update_linked_data; @@ -172,6 +202,12 @@ TEST_F(WebAuthnTest, miss_qr_callback_without_linked_data_N) ret = WAUTHN_ERROR_NONE; wauthn_ga_callbacks_s *ga_callbacks = nullptr; ga_callbacks = (wauthn_ga_callbacks_s*) calloc(1, sizeof(wauthn_ga_callbacks_s)); + EXPECT_TRUE(ga_callbacks); + if (!ga_callbacks) + { + free(mc_callbacks); + return ; + } ga_callbacks->qrcode_callback = nullptr; ga_callbacks->response_callback = test_cb_ga_response; ga_callbacks->linked_data_callback = test_cb_update_linked_data; -- 2.7.4