From f39e43e5d09eb92e5e86c3104960c0971f707400 Mon Sep 17 00:00:00 2001 From: Sauyon Lee Date: Tue, 17 Aug 2021 09:28:11 -0700 Subject: [PATCH] Allow conversions to an array to panic --- ql/src/semmle/go/controlflow/ControlFlowGraphImpl.qll | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ql/src/semmle/go/controlflow/ControlFlowGraphImpl.qll b/ql/src/semmle/go/controlflow/ControlFlowGraphImpl.qll index 341f92925db..5642a853513 100644 --- a/ql/src/semmle/go/controlflow/ControlFlowGraphImpl.qll +++ b/ql/src/semmle/go/controlflow/ControlFlowGraphImpl.qll @@ -1184,6 +1184,14 @@ module CFG { } private class ConversionExprTree extends PostOrderTree, ConversionExpr { + override Completion getCompletion() { + // conversions of a slice to an array pointer are the only kind that may panic + this.getType().(PointerType).getBaseType() instanceof ArrayType and + result = Panic() + or + result = Done() + } + override ControlFlow::Node getNode() { result = MkExprNode(this) } override ControlFlowTree getChildTree(int i) { i = 0 and result = getOperand() }