diff --git a/src/cpp/xmlparser/XMLDynamicParser.cpp b/src/cpp/xmlparser/XMLDynamicParser.cpp index b12ec644821..8ebd350c94b 100644 --- a/src/cpp/xmlparser/XMLDynamicParser.cpp +++ b/src/cpp/xmlparser/XMLDynamicParser.cpp @@ -1422,7 +1422,17 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType( if (!isArray) { - member = factory->create_map_type(key_type, value_type, length)->build(); + auto temp_map = factory->create_map_type(key_type, value_type, length); + if (temp_map) + { + member = temp_map->build(); + } + else + { + EPROSIMA_LOG_ERROR(XMLPARSER, + "Error parsing map member with name = " << memberName); + return {}; + } } else { diff --git a/test/unittest/xmlparser/XMLParserTests.cpp b/test/unittest/xmlparser/XMLParserTests.cpp index 98010b49ed8..a89e04386e0 100644 --- a/test/unittest/xmlparser/XMLParserTests.cpp +++ b/test/unittest/xmlparser/XMLParserTests.cpp @@ -87,6 +87,8 @@ TEST_F(XMLParserTests, regressions) EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/22054_profile_bin.xml", root)); EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/22101_profile_bin.xml", root)); EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/22535_profile_bin.xml", root)); + EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/22843_profile_bin.xml", root)); + EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/22844_profile_bin.xml", root)); Log::Flush(); } diff --git a/test/unittest/xmlparser/regressions/22843_profile_bin.xml b/test/unittest/xmlparser/regressions/22843_profile_bin.xml new file mode 100644 index 00000000000..8b0bc414388 --- /dev/null +++ b/test/unittest/xmlparser/regressions/22843_profile_bin.xml @@ -0,0 +1 @@ +a_S"is_dlt_profile="true"/>a_S"is_dlt_profile="true"/>a_S"is_dlt_profile="true"/>a_S"is_dlt_profile="true"/>a_S"is_dlt_profile="true"/>a_S"is_dlt_profile="true"/>a_S"is_dlt_profile="true"/>a_S"is_ddev/Abensions="̕" sequenceMaxLengd="8978014831475445" /> 9["ui" ="777777777628888889[" /> d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmZ" /> d d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> d >lt_proferi"t=lue"/>a_S"is_drofile="9true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT46" /> d >lt_profile="true"/>a_S"is_drofile="true"/>a_reapre droile_name="dev/Abibitmask bit_boun/dev/shm/fuzz-r2BeLTpe>Abibitmask bit_boun/dev/shm/fuzz-r2BeLTd="8978014831475445" /> 9["ui" ="777777777628888889[" /> d >lt_profile="true"/>a_S"is_drofile="true"/>a_reapre drofile_name="dev/AbibitmasIhKlmT0" /> d m/typedef type="int32" name=" f"/>>lt_profile="true"/>a_S"is_drofile="true"/>a_reapre drofile_name="dev/Abibitmask bit_boun/dev/shm/fuzz-r2BeLTd="8978014831475445" /> 0["ui" ="777777777628888889[" /> 9["ui" ="777777777628888889[" /> 9["ui" ="777777777628888889[" /> d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> d d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> 9["ui" ="777777777628888889[" /> d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> dceMaxLengd="8978014831475445" /> 9["ui" ="77777777762rrayDimensions="̕" sequenceMaxLength="857" /> d >lt_proferi"t=lue"/>a_S"is_drofile="9true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT46" /> d >lt_profile="true"/>a_S"is_drofile="true"/>a_reapre droile_name="dev/Abibitmask bit_boun/dev/shm/fuzz-r2BeLToa*t/"key_type="int64" mapMaxLengpe="octet" mapMaxLength="-0"/> lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> 9["ui" ="777777777628888889[" /> d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> d d >lt_profile="true"/>a_S"is_drofile="true/dev/shm/fuzz-MoxGzZ"/>a_reapre drofile_name="dev/AbibitmasIhKlmT45" /> 9["ui" ="777777777628888889[" /> dEyteppyef type="int16" name="floa*t/"key_typeype>Abibitmask bit_boun/dev/shm/fuzz-r2BeLTd="8978014831475445th="0" />Abibitmask bit_boun/dev/shm/fuzz-r2BeLTd="8978014831475445" /> 9["ui" ="777777777628888889[" /> > d >lt_profile="true"/>a_S"is_droriftel="ue"/>a_reapre drofile_name="[dev/-1!,-1/hmsz-d="897801483147545" /> \ No newline at end of file diff --git a/test/unittest/xmlparser/regressions/22844_profile_bin.xml b/test/unittest/xmlparser/regressions/22844_profile_bin.xml new file mode 100644 index 00000000000..3499e9afee6 --- /dev/null +++ b/test/unittest/xmlparser/regressions/22844_profile_bin.xml @@ -0,0 +1 @@ ++mv/>>>>lfil" "/Abiu42949672951$>>>>>Hlfil"/>"$/>>lfil" "/>type>>" />>>" />>>" />>>" />>>" />>>" />>lfil" "/>>lfil"/>" />>lfil" "/>>Hlfil"/>" />>lt_""/> \ No newline at end of file