File tree Expand file tree Collapse file tree 2 files changed +18
-2
lines changed
lib/semmle/python/frameworks
test/library-tests/frameworks/stdlib Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -450,6 +450,22 @@ private module StdlibPrivate {
450
450
/** Gets a reference to any of the `pickle` modules. */
451
451
API:: Node pickle ( ) { result = API:: moduleImport ( [ "pickle" , "cPickle" , "_pickle" ] ) }
452
452
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
+
453
469
/**
454
470
* A call to `pickle.loads`
455
471
* See https://docs.python.org/3/library/pickle.html#pickle.loads
Original file line number Diff line number Diff line change 3
3
import shelve
4
4
import base64
5
5
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
8
8
pickle .loads (payload ) # $ decodeInput=payload decodeOutput=pickle.loads(..) decodeFormat=pickle decodeMayExecuteInput
9
9
# using this keyword argument is disallowed from Python 3.9
10
10
pickle .loads (data = payload ) # $ decodeInput=payload decodeOutput=pickle.loads(..) decodeFormat=pickle decodeMayExecuteInput
You can’t perform that action at this time.
0 commit comments