From 5d17b2777088a0ffc97e6383b22dd39173319a0e Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Mon, 30 Nov 2020 19:10:58 +0000 Subject: [PATCH] Note that `fmt.Errorf` returns non-nil This enables recognising more guarding functions that return nil/non-nil conditional on a barrier guard. --- ql/src/semmle/go/dataflow/internal/DataFlowUtil.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ql/src/semmle/go/dataflow/internal/DataFlowUtil.qll b/ql/src/semmle/go/dataflow/internal/DataFlowUtil.qll index a551496cfb5..13c536a7a48 100644 --- a/ql/src/semmle/go/dataflow/internal/DataFlowUtil.qll +++ b/ql/src/semmle/go/dataflow/internal/DataFlowUtil.qll @@ -1285,6 +1285,8 @@ private predicate certainlyReturnsNonNil(Function f, FunctionOutput output) { ( f.hasQualifiedName("errors", "New") or + f.hasQualifiedName("fmt", "Errorf") + or f in [Builtin::new(), Builtin::make()] or exists(FuncDecl fd | fd = f.getFuncDecl() |