Fix Heap-buffer-overflow READ in ODDLParser::OpenDDLParser::parseStructure
parent
60989a598e
commit
ffed4ba016
|
@ -338,20 +338,26 @@ char *OpenDDLParser::parseStructure(char *in, char *end) {
|
||||||
|
|
||||||
bool error(false);
|
bool error(false);
|
||||||
in = lookForNextToken(in, end);
|
in = lookForNextToken(in, end);
|
||||||
if (*in == *Grammar::OpenBracketToken) {
|
if (in != end) {
|
||||||
// loop over all children ( data and nodes )
|
if (*in == *Grammar::OpenBracketToken) {
|
||||||
do {
|
// loop over all children ( data and nodes )
|
||||||
in = parseStructureBody(in, end, error);
|
do {
|
||||||
if (in == nullptr) {
|
in = parseStructureBody(in, end, error);
|
||||||
return nullptr;
|
if (in == nullptr) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
} while (in != end &&
|
||||||
|
*in != *Grammar::CloseBracketToken);
|
||||||
|
|
||||||
|
if (in != end) {
|
||||||
|
++in;
|
||||||
}
|
}
|
||||||
} while (*in != *Grammar::CloseBracketToken);
|
} else {
|
||||||
++in;
|
++in;
|
||||||
} else {
|
logInvalidTokenError(in, std::string(Grammar::OpenBracketToken), m_logCallback);
|
||||||
++in;
|
error = true;
|
||||||
logInvalidTokenError(in, std::string(Grammar::OpenBracketToken), m_logCallback);
|
return nullptr;
|
||||||
error = true;
|
}
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
in = lookForNextToken(in, end);
|
in = lookForNextToken(in, end);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue