@@ -25,27 +25,28 @@ private import codeql.ruby.DataFlow
2525 */
2626class ExconHttpRequest extends Http:: Client:: Request:: Range instanceof DataFlow:: CallNode {
2727 API:: Node requestNode ;
28- API:: Node connectionNode ;
2928 DataFlow:: Node connectionUse ;
3029
3130 ExconHttpRequest ( ) {
3231 this = requestNode .asSource ( ) and
33- connectionUse = connectionNode .asSource ( ) and
34- connectionNode =
35- [
36- // one-off requests
37- API:: getTopLevelMember ( "Excon" ) ,
38- // connection re-use
39- API:: getTopLevelMember ( "Excon" ) .getInstance ( ) ,
40- API:: getTopLevelMember ( "Excon" ) .getMember ( "Connection" ) .getInstance ( )
41- ] and
42- requestNode =
43- connectionNode
44- .getReturn ( [
45- // Excon#request exists but Excon.request doesn't.
46- // This shouldn't be a problem - in real code the latter would raise NoMethodError anyway.
47- "get" , "head" , "delete" , "options" , "post" , "put" , "patch" , "trace" , "request"
48- ] )
32+ exists ( API:: Node connectionNode |
33+ connectionUse = connectionNode .asSource ( ) and
34+ connectionNode =
35+ [
36+ // one-off requests
37+ API:: getTopLevelMember ( "Excon" ) ,
38+ // connection re-use
39+ API:: getTopLevelMember ( "Excon" ) .getInstance ( ) ,
40+ API:: getTopLevelMember ( "Excon" ) .getMember ( "Connection" ) .getInstance ( )
41+ ] and
42+ requestNode =
43+ connectionNode
44+ .getReturn ( [
45+ // Excon#request exists but Excon.request doesn't.
46+ // This shouldn't be a problem - in real code the latter would raise NoMethodError anyway.
47+ "get" , "head" , "delete" , "options" , "post" , "put" , "patch" , "trace" , "request"
48+ ] )
49+ )
4950 }
5051
5152 override DataFlow:: Node getResponseBody ( ) { result = requestNode .getAMethodCall ( "body" ) }
0 commit comments