File tree Expand file tree Collapse file tree
lib/semmle/python/frameworks
test/library-tests/frameworks/stdlib Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -450,6 +450,22 @@ private module StdlibPrivate {
450450 /** Gets a reference to any of the `pickle` modules. */
451451 API:: Node pickle ( ) { result = API:: moduleImport ( [ "pickle" , "cPickle" , "_pickle" ] ) }
452452
453+ /**
454+ * A call to `pickle.load`
455+ * See https://docs.python.org/3/library/pickle.html#pickle.load
456+ */
457+ private class PickleLoadCall extends Decoding:: Range , DataFlow:: CallCfgNode {
458+ PickleLoadCall ( ) { this = pickle ( ) .getMember ( "load" ) .getACall ( ) }
459+
460+ override predicate mayExecuteInput ( ) { any ( ) }
461+
462+ override DataFlow:: Node getAnInput ( ) { result in [ this .getArg ( 0 ) , this .getArgByName ( "file" ) ] }
463+
464+ override DataFlow:: Node getOutput ( ) { result = this }
465+
466+ override string getFormat ( ) { result = "pickle" }
467+ }
468+
453469 /**
454470 * A call to `pickle.loads`
455471 * See https://docs.python.org/3/library/pickle.html#pickle.loads
Original file line number Diff line number Diff line change 33import shelve
44import base64
55
6- pickle .load (file_ ) # $ MISSING: decodeInput=file_ decodeOutput=pickle.load(..) decodeFormat=pickle decodeMayExecuteInput
7- pickle .load (file = file_ ) # $ MISSING: decodeInput=file_ decodeOutput=pickle.load(..) decodeFormat=pickle decodeMayExecuteInput
6+ pickle .load (file_ ) # $ decodeInput=file_ decodeOutput=pickle.load(..) decodeFormat=pickle decodeMayExecuteInput
7+ pickle .load (file = file_ ) # $ decodeInput=file_ decodeOutput=pickle.load(..) decodeFormat=pickle decodeMayExecuteInput
88pickle .loads (payload ) # $ decodeInput=payload decodeOutput=pickle.loads(..) decodeFormat=pickle decodeMayExecuteInput
99# using this keyword argument is disallowed from Python 3.9
1010pickle .loads (data = payload ) # $ decodeInput=payload decodeOutput=pickle.loads(..) decodeFormat=pickle decodeMayExecuteInput
You can’t perform that action at this time.
0 commit comments