mirror of
https://github.com/github/codeql.git
synced 2026-02-14 22:21:06 +01:00
Which I had done locally. Problem is the same about not having PostUpdateNode
when points-to is not able to resolve the call, so I'm happy to just make CI
happy right now, and hopefully we'll get a fix to the underlying problem soon 😊
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
import simplejson
|
|
from io import StringIO
|
|
|
|
def test():
|
|
ts = TAINTED_STRING
|
|
tainted_obj = {"foo": ts}
|
|
|
|
encoded = simplejson.dumps(tainted_obj) # $ encodeOutput=Attribute() encodeFormat=JSON encodeInput=tainted_obj
|
|
|
|
ensure_tainted(
|
|
encoded, # $ tainted
|
|
simplejson.dumps(tainted_obj), # $ tainted encodeOutput=Attribute() encodeFormat=JSON encodeInput=tainted_obj
|
|
simplejson.dumps(obj=tainted_obj), # $ tainted encodeOutput=Attribute() encodeFormat=JSON encodeInput=tainted_obj
|
|
simplejson.loads(encoded), # $ tainted decodeOutput=Attribute() decodeFormat=JSON decodeInput=encoded
|
|
simplejson.loads(s=encoded), # $ tainted decodeOutput=Attribute() decodeFormat=JSON decodeInput=encoded
|
|
)
|
|
|
|
# load/dump with file-like
|
|
tainted_filelike = StringIO()
|
|
simplejson.dump(tainted_obj, tainted_filelike) # $ encodeFormat=JSON encodeInput=tainted_obj
|
|
|
|
tainted_filelike.seek(0)
|
|
ensure_tainted(
|
|
tainted_filelike, # $ MISSING: tainted
|
|
simplejson.load(tainted_filelike), # $ decodeOutput=Attribute() decodeFormat=JSON decodeInput=tainted_filelike MISSING: tainted
|
|
)
|
|
|
|
# load/dump with file-like using keyword-args
|
|
tainted_filelike = StringIO()
|
|
simplejson.dump(obj=tainted_obj, fp=tainted_filelike) # $ encodeFormat=JSON encodeInput=tainted_obj
|
|
|
|
tainted_filelike.seek(0)
|
|
ensure_tainted(
|
|
tainted_filelike, # $ MISSING: tainted
|
|
simplejson.load(fp=tainted_filelike), # $ decodeOutput=Attribute() decodeFormat=JSON decodeInput=tainted_filelike MISSING: tainted
|
|
)
|
|
|
|
# To make things runable
|
|
|
|
TAINTED_STRING = "TAINTED_STRING"
|
|
def ensure_tainted(*args):
|
|
print("- ensure_tainted")
|
|
for i, arg in enumerate(args):
|
|
print("arg {}: {!r}".format(i, arg))
|
|
|
|
test()
|