X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FXmlObjMgt%2FXmlObjMgt.cxx;h=5544f2228b11779c2c557a8dc650acd50239617f;hb=ec2039e9a7229f26666626ac2f61c35b1636618a;hpb=4f0ba168fbf152a8158ec71b69de0606d72b5091 diff --git a/src/XmlObjMgt/XmlObjMgt.cxx b/src/XmlObjMgt/XmlObjMgt.cxx index 7d8a67fc00..5544f2228b 100644 --- a/src/XmlObjMgt/XmlObjMgt.cxx +++ b/src/XmlObjMgt/XmlObjMgt.cxx @@ -190,10 +190,10 @@ Standard_Boolean XmlObjMgt::GetTagEntryString errno = 0; char * aPtr; long aTagValue = strtol (&aSource[1], &aPtr, 10); - if (aTagValue <= 0 || aPtr[0] != aQuote || + Standard_Integer aLen = (Standard_Integer)(aPtr - &aSource[1]); + if (aTagValue < 0 || aLen == 0 || aPtr[0] != aQuote || errno == ERANGE || errno == EINVAL) return Standard_False; - Standard_Integer aLen = (Standard_Integer)(aPtr - &aSource[1]); aTagEntryPtr[0] = ':'; memcpy (&aTagEntryPtr[1], &aSource[1], aLen); aTagEntryPtr += (aLen + 1); @@ -246,9 +246,10 @@ void XmlObjMgt::SetTagEntryString (XmlObjMgt_DOMString& theTarget, errno = 0; char * ptr; long aTagValue = strtol (aTagEntry, &ptr, 10); - if (aTagValue <= 0 || errno == ERANGE || errno == EINVAL) - return; // error Standard_Integer aTagSize = (Standard_Integer)(ptr - aTagEntry); + if (aTagValue < 0 || aTagSize == 0 || + errno == ERANGE || errno == EINVAL) + return; // error // Add one XPath level to the expression in aTarget memcpy (&aTargetPtr[0], aRefElem1, anElem1Size);