Hi all,

Reading about Trer'angreal crashing or hanging, I just recently  
discovered a small bug in the message handling of the 0.23.0 release.  
Of course this is regarding the VOP protocol, which probably nobody  
except me uses anymore, so I am not sure anybody else is affected :-)

During normal operation wxterangreal sometimes came to a screeching  
halt with the obscure error message "Remote site error: Protocol  
violation: negative number attribute"

I tracked this down to libs/vos/vos/ 
messageblock.cc:XmlParser::parseNumberAttr,
which basically does this:

int res = (int)strtoul(start+pos+1, &end, 10);
if (res < 0) throw ProtocolError(...)

After adding some printfs I was able to finally catch the offending  
message:

<update length="215"
to="vop://hobbes:4232"
from="vop://hobbes:4231/a3dl:position_284256529"
method="property:replace-update"
nonce="3821366867">
<data>-8.3 1.4 -9.9</data>
<datatype>list: float</datatype>
</update>

Looks harmless enough, right? The error occured on parsing  
nonce="3821366867".
After looking at the code suspiciously I saw that of course  
3821366867 is outside the int32 range, yielding -473600429, which is  
of course negative and thus causes the exception.

Is the range check actually necessary in this method? I don't have  
the time to track this down...

Despite of this obvious bug, I am pleased to see that VOP still sort  
of works despite the long neglect :-)

Regards,
Karsten Otto (kao)

_______________________________________________
vos-d mailing list
[email protected]
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d

Reply via email to