Annotation of embedaddon/libxml2/python/tests/xpathleak.py, revision 1.1
1.1 ! misho 1: #!/usr/bin/python
! 2: import sys, libxml2
! 3:
! 4: libxml2.debugMemory(True)
! 5:
! 6: expect="""--> Invalid expression
! 7: --> xmlXPathEval: evaluation failed
! 8: --> Invalid expression
! 9: --> xmlXPathEval: evaluation failed
! 10: --> Invalid expression
! 11: --> xmlXPathEval: evaluation failed
! 12: --> Invalid expression
! 13: --> xmlXPathEval: evaluation failed
! 14: --> Invalid expression
! 15: --> xmlXPathEval: evaluation failed
! 16: --> Invalid expression
! 17: --> xmlXPathEval: evaluation failed
! 18: --> Invalid expression
! 19: --> xmlXPathEval: evaluation failed
! 20: --> Invalid expression
! 21: --> xmlXPathEval: evaluation failed
! 22: --> Invalid expression
! 23: --> xmlXPathEval: evaluation failed
! 24: --> Invalid expression
! 25: --> xmlXPathEval: evaluation failed
! 26: """
! 27: err=""
! 28: def callback(ctx, str):
! 29: global err
! 30:
! 31: err = err + "%s %s" % (ctx, str)
! 32:
! 33: libxml2.registerErrorHandler(callback, "-->")
! 34:
! 35: doc = libxml2.parseDoc("<fish/>")
! 36: ctxt = doc.xpathNewContext()
! 37: ctxt.setContextNode(doc)
! 38: badexprs = (
! 39: ":false()", "bad:()", "bad(:)", ":bad(:)", "bad:(:)", "bad:bad(:)",
! 40: "a:/b", "/c:/d", "//e:/f", "g://h"
! 41: )
! 42: for expr in badexprs:
! 43: try:
! 44: ctxt.xpathEval(expr)
! 45: except libxml2.xpathError, e:
! 46: pass
! 47: else:
! 48: print "Unexpectedly legal expression:", expr
! 49: ctxt.xpathFreeContext()
! 50: doc.freeDoc()
! 51:
! 52: if err != expect:
! 53: print "error"
! 54: print "received %s" %(err)
! 55: print "expected %s" %(expect)
! 56: sys.exit(1)
! 57:
! 58: libxml2.cleanupParser()
! 59: leakedbytes = libxml2.debugMemory(True)
! 60: if leakedbytes == 0:
! 61: print "OK"
! 62: else:
! 63: print "Memory leak", leakedbytes, "bytes"
! 64: # drop file to .memdump file in cwd, but won't work if not compiled in
! 65: libxml2.dumpMemory()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>