Author: Manna, Soumi Date: 2023-05-23T07:42:15-07:00 New Revision: 64e9ba7048b8fb4ac72bbc72e8861c947d49f3d4
URL: https://github.com/llvm/llvm-project/commit/64e9ba7048b8fb4ac72bbc72e8861c947d49f3d4 DIFF: https://github.com/llvm/llvm-project/commit/64e9ba7048b8fb4ac72bbc72e8861c947d49f3d4.diff LOG: [NFC][CLANG] Fix static code analyzer concerns Reported by Static Code Analyzer Tool, Coverity: Dereference null return value Inside "ExprConstant.cpp" file, in <unnamed>::RecordExprEvaluator::VisitCXXStdInitializerListExpr(clang::CXXStdInitializerListExpr const *): Return value of function which returns null is dereferenced without checking. bool RecordExprEvaluator::VisitCXXStdInitializerListExpr( const CXXStdInitializerListExpr *E) { // returned_null: getAsConstantArrayType returns nullptr (checked 81 out of 93 times). //var_assigned: Assigning: ArrayType = nullptr return value from getAsConstantArrayType. const ConstantArrayType *ArrayType = Info.Ctx.getAsConstantArrayType(E->getSubExpr()->getType()); LValue Array; //Condition !EvaluateLValue(E->getSubExpr(), Array, this->Info, false), taking false branch. if (!EvaluateLValue(E->getSubExpr(), Array, Info)) return false; // Get a pointer to the first element of the array. //Dereference null return value (NULL_RETURNS) //dereference: Dereferencing a pointer that might be nullptr ArrayType when calling addArray. Array.addArray(Info, E, ArrayType); This patch adds an assert for unexpected type for array initializer. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D151040 Added: Modified: clang/lib/AST/ExprConstant.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp index ce3c5257e711..423ed86ef41e 100644 --- a/clang/lib/AST/ExprConstant.cpp +++ b/clang/lib/AST/ExprConstant.cpp @@ -10174,6 +10174,8 @@ bool RecordExprEvaluator::VisitCXXStdInitializerListExpr( if (!EvaluateLValue(E->getSubExpr(), Array, Info)) return false; + assert(ArrayType && "unexpected type for array initializer"); + // Get a pointer to the first element of the array. Array.addArray(Info, E, ArrayType); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits