From 26fa079c8d240a1804ed3b57ccf3ad705ebc3528 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Sat, 30 May 2026 06:30:38 +0100 Subject: [PATCH] update function-entry additional nodes --- go/ql/lib/semmle/go/controlflow/IR.qll | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/go/ql/lib/semmle/go/controlflow/IR.qll b/go/ql/lib/semmle/go/controlflow/IR.qll index 86df852f7a5..91d73fe901f 100644 --- a/go/ql/lib/semmle/go/controlflow/IR.qll +++ b/go/ql/lib/semmle/go/controlflow/IR.qll @@ -960,7 +960,7 @@ module IR { FuncDef fd; ReadResultInstruction() { - this.isAdditional(fd, "result-read:" + idx.toString()) and + this.isAdditional(fd.getBody(), "result-read:" + idx.toString()) and var = fd.getResultVar(idx) } @@ -987,12 +987,12 @@ module IR { FuncDef fd; InitParameterInstruction() { - this.isAdditional(fd, "param-init:" + idx.toString()) and + this.isAdditional(fd.getBody(), "param-init:" + idx.toString()) and parm = fd.getParameter(idx) } override Instruction getRhs() { - result.(ReadArgumentInstruction).isAdditional(fd, "arg:" + idx.toString()) + result.(ReadArgumentInstruction).isAdditional(fd.getBody(), "arg:" + idx.toString()) } override ControlFlow::Root getRoot() { result = parm.getFunction() } @@ -1005,7 +1005,7 @@ module IR { FuncDef fd; ReadArgumentInstruction() { - this.isAdditional(fd, "arg:" + idx.toString()) and + this.isAdditional(fd.getBody(), "arg:" + idx.toString()) and parm = fd.getParameter(idx) } @@ -1021,12 +1021,14 @@ module IR { FuncDef fd; InitResultInstruction() { - this.isAdditional(fd, "result-init:" + idx.toString()) and + this.isAdditional(fd.getBody(), "result-init:" + idx.toString()) and res = fd.getResultVar(idx) } override Instruction getRhs() { - result.(ResultZeroInitInstruction).isAdditional(fd, "result-zero-init:" + idx.toString()) + result + .(ResultZeroInitInstruction) + .isAdditional(fd.getBody(), "result-zero-init:" + idx.toString()) } override ControlFlow::Root getRoot() { result = res.getFunction() } @@ -1038,7 +1040,7 @@ module IR { FuncDef fd; ResultZeroInitInstruction() { - this.isAdditional(fd, "result-zero-init:" + idx.toString()) and + this.isAdditional(fd.getBody(), "result-zero-init:" + idx.toString()) and res = fd.getResultVar(idx) } @@ -1214,12 +1216,12 @@ module IR { exists(IncDecStmt ids | write.isIn(ids) | lhs = ids.getOperand().stripParens()) or exists(FuncDef fd, int idx | - write.isAdditional(fd, "param-init:" + idx.toString()) and + write.isAdditional(fd.getBody(), "param-init:" + idx.toString()) and lhs = fd.getParameter(idx).getDeclaration() ) or exists(FuncDef fd, int idx | - write.isAdditional(fd, "result-init:" + idx.toString()) and + write.isAdditional(fd.getBody(), "result-init:" + idx.toString()) and lhs = fd.getResultVar(idx).getDeclaration() ) } or @@ -1411,7 +1413,7 @@ module IR { */ InitParameterInstruction initRecvInstruction(ReceiverVariable r) { exists(FuncDef fd, int i | - fd.getParameter(i) = r and result.isAdditional(fd, "param-init:" + i.toString()) + fd.getParameter(i) = r and result.isAdditional(fd.getBody(), "param-init:" + i.toString()) ) } @@ -1420,7 +1422,7 @@ module IR { */ InitParameterInstruction initParamInstruction(Parameter p) { exists(FuncDef fd, int i | - fd.getParameter(i) = p and result.isAdditional(fd, "param-init:" + i.toString()) + fd.getParameter(i) = p and result.isAdditional(fd.getBody(), "param-init:" + i.toString()) ) }