From 4df449d4b08fa041cb1f2d1bd69cf5e645d6f3ba Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 3 Apr 2025 20:30:52 +0100 Subject: [PATCH] PS: Add an edge from the root node to automatic variables, and from a member read qualifier to a read. --- .../ql/lib/semmle/code/powershell/ApiGraphs.qll | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/powershell/ql/lib/semmle/code/powershell/ApiGraphs.qll b/powershell/ql/lib/semmle/code/powershell/ApiGraphs.qll index 8634161e5a0..9ee600c82cb 100644 --- a/powershell/ql/lib/semmle/code/powershell/ApiGraphs.qll +++ b/powershell/ql/lib/semmle/code/powershell/ApiGraphs.qll @@ -527,8 +527,18 @@ module API { pred = MkNamespaceOfTypeNameNode(typeName) and succ = getForwardStartNode(typeName) ) - // or - // TODO: Handle getAMember when the predecessor is a MkUsingNode? + or + pred = MkRoot() and + exists(DataFlow::AutomaticVariableNode automatic | + automatic.getName() = name and + succ = getForwardStartNode(automatic) + ) + or + exists(MemberExprReadAccess read | + read.getMemberName().toLowerCase() = name and + pred = getForwardEndNode(getALocalSourceStrict(getNodeFromExpr(read.getQualifier()))) and + succ = getForwardStartNode(getNodeFromExpr(read)) + ) } cached