Fix issue 10027: Segmentation fault in ValueFlowAnalyzer::analyze (#2987)

This commit is contained in:
Paul Fultz II 2020-12-26 14:26:39 -06:00 committed by GitHub
parent 9d54303cfa
commit bd22070df5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

View File

@ -128,6 +128,9 @@ struct ReverseTraversal {
break;
// Evaluate LHS of assignment before RHS
if (Token* assignTok = assignExpr(tok)) {
// If assignTok has broken ast then stop
if (!assignTok->astOperand1() || !assignTok->astOperand2())
break;
Token* assignTop = assignTok;
bool continueB = true;
while (assignTop->isAssignmentOp()) {

View File

@ -4978,6 +4978,20 @@ private:
" }\n"
"};\n";
valueOfTok(code, "c");
code = "void f() {\n"
" char* p = 0;\n"
" int pi =\n"
" p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 \n"
" : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 \n"
" : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 \n"
" : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 \n"
" : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 : p == \"a\" ? 1 \n"
" : 0;\n"
" int *i2 = 0;\n"
" if (i2) { }\n"
"}\n";
valueOfTok(code, "p");
}
void valueFlowHang() {