Skip to content

Commit be4529d

Browse files
Fix null dereference on parseXMLBitsetDynamicType (#2893)
* Refs #14456. Regression test added. Signed-off-by: Miguel Company <[email protected]> * Refs #14456. Fix issue. Signed-off-by: Miguel Company <[email protected]>
1 parent 36818f2 commit be4529d

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

src/cpp/rtps/xmlparser/XMLDynamicParser.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,11 @@ XMLP_ret XMLParser::parseXMLBitsetDynamicType(
394394
uint32_t mId = 0;
395395

396396
const char* name = p_root->Attribute(NAME);
397+
if (nullptr == name)
398+
{
399+
logError(XMLPARSER, "Error parsing 'bitsetDcl' type. No name attribute given.");
400+
return XMLP_ret::XML_ERROR;
401+
}
397402

398403
const char* baseType = p_root->Attribute(BASE_TYPE);
399404
if (baseType != nullptr)

test/unittest/xmlparser/XMLParserTests.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ TEST_F(XMLParserTests, regressions)
5858
EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/13418.xml", root));
5959
EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/13454.xml", root));
6060
EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/13513.xml", root));
61+
EXPECT_EQ(XMLP_ret::XML_ERROR, XMLParser::loadXML("regressions/14456.xml", root));
6162
}
6263

6364
TEST_F(XMLParserTests, NoFile)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<types><type><bitset/></type></types>

0 commit comments

Comments
 (0)