From b8e486b42d7e9aa5e1e1077dc0bb6c19e6f2892d Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Thu, 11 Sep 2025 21:54:54 -0500 Subject: [PATCH] Fix memory leak in get_loader_settings Caused by the result value containing a spurious initialization failed error code. --- loader/settings.c | 6 ++++-- ...se-minimized-settings_fuzzer-4626669072875520 | Bin 0 -> 3323 bytes tests/loader_fuzz_tests.cpp | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 tests/framework/data/fuzz_test_minimized_test_cases/clusterfuzz-testcase-minimized-settings_fuzzer-4626669072875520 diff --git a/loader/settings.c b/loader/settings.c index 38667edab..365cfb9d0 100644 --- a/loader/settings.c +++ b/loader/settings.c @@ -748,8 +748,10 @@ VkResult get_loader_settings(const struct loader_instance* inst, loader_settings cJSON* stderr_filter = loader_cJSON_GetObjectItem(settings_to_use, "stderr_log"); if (NULL != stderr_filter) { struct loader_string_list stderr_log = {0}; - res = loader_parse_json_array_of_strings(inst, settings_to_use, "stderr_log", &stderr_log); - if (VK_ERROR_OUT_OF_HOST_MEMORY == res) { + VkResult stderr_log_result = VK_SUCCESS; + stderr_log_result = loader_parse_json_array_of_strings(inst, settings_to_use, "stderr_log", &stderr_log); + if (VK_ERROR_OUT_OF_HOST_MEMORY == stderr_log_result) { + res = VK_ERROR_OUT_OF_HOST_MEMORY; goto out; } loader_settings->debug_level = parse_log_filters_from_strings(&stderr_log); diff --git a/tests/framework/data/fuzz_test_minimized_test_cases/clusterfuzz-testcase-minimized-settings_fuzzer-4626669072875520 b/tests/framework/data/fuzz_test_minimized_test_cases/clusterfuzz-testcase-minimized-settings_fuzzer-4626669072875520 new file mode 100644 index 0000000000000000000000000000000000000000..ad9eccc99ff54648d886f4601bf3a0fa90a9ab0a GIT binary patch literal 3323 zcmeHK%WB*(6z#6iALyc+;jTj_Dd~f(nnE9tp#v!tN*GjSEKNmh$;h(9B!qlGq5XhD zf2{j{MPYicJytBc4l|2{5TeD{NJm%qTuH}g&K?c0fmE?z(%6JMRtTFZqhWUd+nY}} zw_u~fWWqV6XBp$x@;MG4mi;vU%)gbKBG5#va$etOf>4O{(1LX^^={Sj%EFqqTv@F>DM#X=&(r!mXxfDy+ok_SVkJXD^;( zM+6+Hg_^Vc`3OnX&aj{PuG?r`w`q{9OFbR&^rN$Yus zFmy@Uj_$#@M-I0Jb}L?!pb&&Q4|+OD61BCmn;Pw`iRmEl++hWS_&zVq6G0ep$lb=PJ||d(ls8HF+x9FTOWp2G8YgW?)peC?>`8AeX-G=v)Z0R(~NtM z-MwmCpI6|&+;Qj%le>eL8 literal 0 HcmV?d00001 diff --git a/tests/loader_fuzz_tests.cpp b/tests/loader_fuzz_tests.cpp index 4298ecf33..7e3ba0593 100644 --- a/tests/loader_fuzz_tests.cpp +++ b/tests/loader_fuzz_tests.cpp @@ -287,3 +287,6 @@ TEST(BadJsonInput, ClusterFuzzTestCase_5123849246867456) { // Causes a leak - settings_fuzzer: Direct-leak in loader_append_layer_property execute_setting_fuzzer("clusterfuzz-testcase-minimized-settings_fuzzer-5123849246867456"); } +TEST(BadJsonInput, ClusterFuzzTestCase_4626669072875520) { + execute_setting_fuzzer("clusterfuzz-testcase-minimized-settings_fuzzer-4626669072875520"); +}