From 15d7b9c83f05b21c80f27553184b301cb6f7eb7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 17 Oct 2019 17:41:54 +0200 Subject: [PATCH] Fixed #9347 (FP uninitvar for pointer passed to sscanf) --- lib/valueflow.cpp | 3 +++ test/testuninitvar.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index c5e2005e3..346c5f346 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -5520,6 +5520,9 @@ static void valueFlowSubFunction(TokenList* tokenlist, ErrorLogger* errorLogger, // Don't forward lifetime values argvalues.remove_if(std::mem_fn(&ValueFlow::Value::isLifetimeValue)); + // Don't forward values, this is handled by CTU. We also had a FP #9347 + argvalues.remove_if(std::mem_fn(&ValueFlow::Value::isUninitValue)); + if (argvalues.empty()) continue; diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 6904e89d3..bcc6e212a 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -4278,7 +4278,7 @@ private: " someType_t gVar;\n" " bar(&gVar);\n" "}\n"); - ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:5]: (error) Uninitialized variable: flags\n", errout.str()); + TODO_ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:5]: (error) Uninitialized variable: p->flags\n", "", errout.str()); valueFlowUninit("typedef struct \n" "{\n"