]> git.cworth.org Git - apitrace/commitdiff
Avoid walking off array if given a negative value for array size.
authorCarl Worth <cworth@cworth.org>
Mon, 4 Jun 2012 21:47:33 +0000 (14:47 -0700)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 11 Jun 2012 15:40:00 +0000 (16:40 +0100)
Obviously, a negative size is bogus, but we want apitrace to be robust
enough to capture even bogus usage of the API, (so that the user can
investigate and fix the bogosity in the application).

In this case, if the user specifies a negative size for an array,
simply don't write anything out for the array content.

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
wrappers/trace.py

index c838dc78a83df0e8e61190b1f30ef774b20e5ba8..5f6f52b4d3f446803e41007582d9df5007eaa84a 100644 (file)
@@ -187,7 +187,7 @@ class ValueSerializer(stdapi.Visitor):
         length = '_c' + array.type.tag
         index = '_i' + array.type.tag
         print '    if (%s) {' % instance
-        print '        size_t %s = %s;' % (length, array.length)
+        print '        size_t %s = %s > 0 ? %s : 0;' % (length, array.length, array.length)
         print '        trace::localWriter.beginArray(%s);' % length
         print '        for (size_t %s = 0; %s < %s; ++%s) {' % (index, index, length, index)
         print '            trace::localWriter.beginElement();'