From af277fe06f5cc5f9bbdb0d2147da233394e212e2 Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Sun, 6 Sep 2026 10:02:18 -0400 Subject: [PATCH] presets: Avoid string conversion on bad "name" type --- Source/cmCMakePresetsErrors.cxx | 5 ++++- Tests/Fuzzing/corpus/presets/name-list.json | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Tests/Fuzzing/corpus/presets/name-list.json diff --git a/Source/cmCMakePresetsErrors.cxx b/Source/cmCMakePresetsErrors.cxx index 5679eeaa44..db80ecb901 100644 --- a/Source/cmCMakePresetsErrors.cxx +++ b/Source/cmCMakePresetsErrors.cxx @@ -42,7 +42,10 @@ std::string getPresetName(cmJSONState* state) { Json::Value const* preset = getPreset(state); if (preset && preset->isMember("name")) { - return preset->operator[]("name").asString(); + Json::Value const& name = preset->operator[]("name"); + if (name.isConvertibleTo(Json::ValueType::stringValue)) { + return name.asString(); + } } return ""; } diff --git a/Tests/Fuzzing/corpus/presets/name-list.json b/Tests/Fuzzing/corpus/presets/name-list.json new file mode 100644 index 0000000000..7540772874 --- /dev/null +++ b/Tests/Fuzzing/corpus/presets/name-list.json @@ -0,0 +1,11 @@ +{ + "version":6, + "configurePresets": [ + { + "name": [], + "cacheVariables": { + "": {} + } + } + ] +}