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": { + "": {} + } + } + ] +}