@@ -7,50 +7,19 @@ private import python
7
7
private import semmle.python.dataflow.new.DataFlow
8
8
private import semmle.python.dataflow.new.RemoteFlowSources
9
9
private import semmle.python.Concepts
10
-
11
- private module Dill {
12
- /** Gets a reference to the `dill` module. */
13
- private DataFlow:: Node dill ( DataFlow:: TypeTracker t ) {
14
- t .start ( ) and
15
- result = DataFlow:: importNode ( "dill" )
16
- or
17
- exists ( DataFlow:: TypeTracker t2 | result = dill ( t2 ) .track ( t2 , t ) )
18
- }
19
-
20
- /** Gets a reference to the `dill` module. */
21
- DataFlow:: Node dill ( ) { result = dill ( DataFlow:: TypeTracker:: end ( ) ) }
22
-
23
- /** Provides models for the `dill` module. */
24
- module dill {
25
- /** Gets a reference to the `dill.loads` function. */
26
- private DataFlow:: Node loads ( DataFlow:: TypeTracker t ) {
27
- t .start ( ) and
28
- result = DataFlow:: importNode ( "dill.loads" )
29
- or
30
- t .startInAttr ( "loads" ) and
31
- result = dill ( )
32
- or
33
- exists ( DataFlow:: TypeTracker t2 | result = loads ( t2 ) .track ( t2 , t ) )
34
- }
35
-
36
- /** Gets a reference to the `dill.loads` function. */
37
- DataFlow:: Node loads ( ) { result = loads ( DataFlow:: TypeTracker:: end ( ) ) }
38
- }
39
- }
10
+ private import semmle.python.ApiGraphs
40
11
41
12
/**
42
13
* A call to `dill.loads`
43
14
* See https://pypi.org/project/dill/ (which currently refers you
44
15
* to https://docs.python.org/3/library/pickle.html#pickle.loads)
45
16
*/
46
- private class DillLoadsCall extends Decoding:: Range , DataFlow:: CfgNode {
47
- override CallNode node ;
48
-
49
- DillLoadsCall ( ) { node .getFunction ( ) = Dill:: dill:: loads ( ) .asCfgNode ( ) }
17
+ private class DillLoadsCall extends Decoding:: Range , DataFlow:: CallCfgNode {
18
+ DillLoadsCall ( ) { this = API:: moduleImport ( "dill" ) .getMember ( "loads" ) .getACall ( ) }
50
19
51
20
override predicate mayExecuteInput ( ) { any ( ) }
52
21
53
- override DataFlow:: Node getAnInput ( ) { result . asCfgNode ( ) = node .getArg ( 0 ) }
22
+ override DataFlow:: Node getAnInput ( ) { result = this .getArg ( 0 ) }
54
23
55
24
override DataFlow:: Node getOutput ( ) { result = this }
56
25
0 commit comments