@@ -339,7 +339,7 @@ module Flask {
339339 */
340340 private class FlaskRequestSource extends RemoteFlowSource:: Range {
341341 FlaskRequestSource ( ) {
342- this = request ( ) .getAUse ( ) and
342+ this = request ( ) .getAnImmediateUse ( ) and
343343 not any ( Import imp ) .contains ( this .asExpr ( ) ) and
344344 not exists ( ControlFlowNode def | this .asVar ( ) .getSourceVariable ( ) .hasDefiningNode ( def ) |
345345 any ( Import imp ) .contains ( def .getNode ( ) )
@@ -406,8 +406,8 @@ module Flask {
406406 string attr_name ;
407407
408408 RequestAttrMultiDict ( ) {
409- attr_name in [ "args" , "values" , "form" , "files" ] and
410- this . ( DataFlow :: AttrRead ) . accesses ( request ( ) . getAUse ( ) , attr_name )
409+ this = request ( ) . getMember ( attr_name ) . getAnImmediateUse ( ) and
410+ attr_name in [ "args" , "values" , "form" , "files" ]
411411 }
412412 }
413413
@@ -421,7 +421,7 @@ module Flask {
421421 // TODO: This approach for identifying member-access is very adhoc, and we should
422422 // be able to do something more structured for providing modeling of the members
423423 // of a container-object.
424- exists ( DataFlow:: AttrRead files | files . accesses ( request ( ) .getAUse ( ) , "files" ) |
424+ exists ( DataFlow:: AttrRead files | files = request ( ) .getMember ( "files" ) . getAnImmediateUse ( ) |
425425 this .asCfgNode ( ) .( SubscriptNode ) .getObject ( ) = files .asCfgNode ( )
426426 or
427427 this .( DataFlow:: MethodCallNode ) .calls ( files , "get" )
@@ -435,15 +435,13 @@ module Flask {
435435
436436 /** An `Headers` instance that originates from a flask request. */
437437 private class FlaskRequestHeadersInstances extends Werkzeug:: Headers:: InstanceSource {
438- FlaskRequestHeadersInstances ( ) {
439- this .( DataFlow:: AttrRead ) .accesses ( request ( ) .getAUse ( ) , "headers" )
440- }
438+ FlaskRequestHeadersInstances ( ) { this = request ( ) .getMember ( "headers" ) .getAnImmediateUse ( ) }
441439 }
442440
443441 /** An `Authorization` instance that originates from a flask request. */
444442 private class FlaskRequestAuthorizationInstances extends Werkzeug:: Authorization:: InstanceSource {
445443 FlaskRequestAuthorizationInstances ( ) {
446- this . ( DataFlow :: AttrRead ) . accesses ( request ( ) .getAUse ( ) , "authorization" )
444+ this = request ( ) .getMember ( "authorization" ) . getAnImmediateUse ( )
447445 }
448446 }
449447
0 commit comments