@@ -102,74 +102,71 @@ private module Stdlib {
102102 * A call to `os.system`.
103103 * See https://docs.python.org/3/library/os.html#os.system
104104 */
105- private class OsSystemCall extends SystemCommandExecution:: Range {
106- OsSystemCall ( ) { this . asCfgNode ( ) . ( CallNode ) . getFunction ( ) = os_attr ( "system" ) . asCfgNode ( ) }
105+ private class OsSystemCall extends SystemCommandExecution:: Range , DataFlow :: CfgNode {
106+ override CallNode node ;
107107
108- override DataFlow :: Node getCommand ( ) {
109- result . asCfgNode ( ) = this . asCfgNode ( ) . ( CallNode ) . getArg ( 0 )
110- }
108+ OsSystemCall ( ) { node . getFunction ( ) = os_attr ( "system" ) . asCfgNode ( ) }
109+
110+ override DataFlow :: Node getCommand ( ) { result . asCfgNode ( ) = node . getArg ( 0 ) }
111111 }
112112
113113 /**
114114 * A call to `os.popen`
115115 * See https://docs.python.org/3/library/os.html#os.popen
116116 */
117- private class OsPopenCall extends SystemCommandExecution:: Range {
118- OsPopenCall ( ) { this . asCfgNode ( ) . ( CallNode ) . getFunction ( ) = os_attr ( "popen" ) . asCfgNode ( ) }
117+ private class OsPopenCall extends SystemCommandExecution:: Range , DataFlow :: CfgNode {
118+ override CallNode node ;
119119
120- override DataFlow :: Node getCommand ( ) {
121- result . asCfgNode ( ) = this . asCfgNode ( ) . ( CallNode ) . getArg ( 0 )
122- }
120+ OsPopenCall ( ) { node . getFunction ( ) = os_attr ( "popen" ) . asCfgNode ( ) }
121+
122+ override DataFlow :: Node getCommand ( ) { result . asCfgNode ( ) = node . getArg ( 0 ) }
123123 }
124124
125125 /**
126126 * A call to any of the `os.exec*` functions
127127 * See https://docs.python.org/3.8/library/os.html#os.execl
128128 */
129- private class OsExecCall extends SystemCommandExecution:: Range {
129+ private class OsExecCall extends SystemCommandExecution:: Range , DataFlow:: CfgNode {
130+ override CallNode node ;
131+
130132 OsExecCall ( ) {
131133 exists ( string name |
132134 name in [ "execl" , "execle" , "execlp" , "execlpe" , "execv" , "execve" , "execvp" , "execvpe" ] and
133- this . asCfgNode ( ) . ( CallNode ) .getFunction ( ) = os_attr ( name ) .asCfgNode ( )
135+ node .getFunction ( ) = os_attr ( name ) .asCfgNode ( )
134136 )
135137 }
136138
137- override DataFlow:: Node getCommand ( ) {
138- result .asCfgNode ( ) = this .asCfgNode ( ) .( CallNode ) .getArg ( 0 )
139- }
139+ override DataFlow:: Node getCommand ( ) { result .asCfgNode ( ) = node .getArg ( 0 ) }
140140 }
141141
142142 /**
143143 * A call to any of the `os.spawn*` functions
144144 * See https://docs.python.org/3.8/library/os.html#os.spawnl
145145 */
146- private class OsSpawnCall extends SystemCommandExecution:: Range {
146+ private class OsSpawnCall extends SystemCommandExecution:: Range , DataFlow:: CfgNode {
147+ override CallNode node ;
148+
147149 OsSpawnCall ( ) {
148150 exists ( string name |
149151 name in [ "spawnl" , "spawnle" , "spawnlp" , "spawnlpe" , "spawnv" , "spawnve" , "spawnvp" ,
150152 "spawnvpe" ] and
151- this . asCfgNode ( ) . ( CallNode ) .getFunction ( ) = os_attr ( name ) .asCfgNode ( )
153+ node .getFunction ( ) = os_attr ( name ) .asCfgNode ( )
152154 )
153155 }
154156
155- override DataFlow:: Node getCommand ( ) {
156- result .asCfgNode ( ) = this .asCfgNode ( ) .( CallNode ) .getArg ( 1 )
157- }
157+ override DataFlow:: Node getCommand ( ) { result .asCfgNode ( ) = node .getArg ( 1 ) }
158158 }
159159
160160 /**
161161 * A call to any of the `os.posix_spawn*` functions
162162 * See https://docs.python.org/3.8/library/os.html#os.posix_spawn
163163 */
164- private class OsPosixSpawnCall extends SystemCommandExecution:: Range {
165- OsPosixSpawnCall ( ) {
166- this .asCfgNode ( ) .( CallNode ) .getFunction ( ) =
167- os_attr ( [ "posix_spawn" , "posix_spawnp" ] ) .asCfgNode ( )
168- }
164+ private class OsPosixSpawnCall extends SystemCommandExecution:: Range , DataFlow:: CfgNode {
165+ override CallNode node ;
169166
170- override DataFlow :: Node getCommand ( ) {
171- result . asCfgNode ( ) = this . asCfgNode ( ) . ( CallNode ) . getArg ( 0 )
172- }
167+ OsPosixSpawnCall ( ) { node . getFunction ( ) = os_attr ( [ "posix_spawn" , "posix_spawnp" ] ) . asCfgNode ( ) }
168+
169+ override DataFlow :: Node getCommand ( ) { result . asCfgNode ( ) = node . getArg ( 0 ) }
173170 }
174171
175172 /** An additional taint step for calls to `os.path.join` */
@@ -363,14 +360,14 @@ private module Stdlib {
363360 * A call to `marshal.loads`
364361 * See https://docs.python.org/3/library/marshal.html#marshal.loads
365362 */
366- private class MarshalLoadsCall extends Decoding:: Range {
367- MarshalLoadsCall ( ) { this .asCfgNode ( ) .( CallNode ) .getFunction ( ) = marshal:: loads ( ) .asCfgNode ( ) }
363+ private class MarshalLoadsCall extends Decoding:: Range , DataFlow:: CfgNode {
364+ override CallNode node ;
365+
366+ MarshalLoadsCall ( ) { node .getFunction ( ) = marshal:: loads ( ) .asCfgNode ( ) }
368367
369368 override predicate unsafe ( ) { any ( ) }
370369
371- override DataFlow:: Node getAnInput ( ) {
372- result .asCfgNode ( ) = this .asCfgNode ( ) .( CallNode ) .getArg ( 0 )
373- }
370+ override DataFlow:: Node getAnInput ( ) { result .asCfgNode ( ) = node .getArg ( 0 ) }
374371
375372 override DataFlow:: Node getOutput ( ) { result = this }
376373
@@ -414,14 +411,14 @@ private module Stdlib {
414411 * A call to `pickle.loads`
415412 * See https://docs.python.org/3/library/pickle.html#pickle.loads
416413 */
417- private class PickleLoadsCall extends Decoding:: Range {
418- PickleLoadsCall ( ) { this .asCfgNode ( ) .( CallNode ) .getFunction ( ) = pickle:: loads ( ) .asCfgNode ( ) }
414+ private class PickleLoadsCall extends Decoding:: Range , DataFlow:: CfgNode {
415+ override CallNode node ;
416+
417+ PickleLoadsCall ( ) { node .getFunction ( ) = pickle:: loads ( ) .asCfgNode ( ) }
419418
420419 override predicate unsafe ( ) { any ( ) }
421420
422- override DataFlow:: Node getAnInput ( ) {
423- result .asCfgNode ( ) = this .asCfgNode ( ) .( CallNode ) .getArg ( 0 )
424- }
421+ override DataFlow:: Node getAnInput ( ) { result .asCfgNode ( ) = node .getArg ( 0 ) }
425422
426423 override DataFlow:: Node getOutput ( ) { result = this }
427424
0 commit comments