From ab6b1a41ef7afaf99db6c63cd1804bad997a8795 Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Tue, 10 Aug 2021 00:53:07 +0500 Subject: [PATCH] Fix crash if QRegularExpression() is used --- src/checks/level0/use-static-qregularexpression.cpp | 9 ++++++++- tests/use-static-qregularexpression/main.cpp | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/checks/level0/use-static-qregularexpression.cpp b/src/checks/level0/use-static-qregularexpression.cpp index 30a2ea85..0e5c2a8f 100644 --- a/src/checks/level0/use-static-qregularexpression.cpp +++ b/src/checks/level0/use-static-qregularexpression.cpp @@ -80,8 +80,15 @@ static bool isQRegexpFromStringLiteral(VarDecl *qregexVarDecl) return false; } - auto ctorCall = dyn_cast_or_null(*initExpr->child_begin()); + auto ctorCall = dyn_cast(initExpr); if (!ctorCall) { + ctorCall = clazy::getFirstChildOfType(initExpr); + if (!ctorCall) { + return false; + } + } + + if (ctorCall->getNumArgs() < 2) { return false; } diff --git a/tests/use-static-qregularexpression/main.cpp b/tests/use-static-qregularexpression/main.cpp index eaa63340..3f792248 100644 --- a/tests/use-static-qregularexpression/main.cpp +++ b/tests/use-static-qregularexpression/main.cpp @@ -78,3 +78,10 @@ void test2(const QStringList& regexes, QString toCheck) toCheck.contains(QRegularExpression(regix)); // Ok, no warn } } + +void test_nocrash() +{ + QRegularExpression re; + QString s; + s.contains(re); +} -- GitLab