]> granicus.if.org Git - clang/commitdiff
Harden InitListExpr::isStringLiteralInit() against getInit() returning null.
authorTed Kremenek <kremenek@apple.com>
Sun, 19 Jan 2014 06:31:34 +0000 (06:31 +0000)
committerTed Kremenek <kremenek@apple.com>
Sun, 19 Jan 2014 06:31:34 +0000 (06:31 +0000)
This led to a crash on invalid code (sorry, no good test case).

Fixes <rdar://problem/15831804>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199571 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Expr.cpp

index 842b8c7fdefbc94f0ce63a08d4bbfedc17f81a4e..154aa4c5380133716167dd9b4ed01e70f9562c09 100644 (file)
@@ -1869,7 +1869,11 @@ bool InitListExpr::isStringLiteralInit() const {
   const ArrayType *AT = getType()->getAsArrayTypeUnsafe();
   if (!AT || !AT->getElementType()->isIntegerType())
     return false;
-  const Expr *Init = getInit(0)->IgnoreParens();
+  // It is possible for getInit() to return null.
+  const Expr *Init = getInit(0);
+  if (!Init)
+    return false;
+  Init = Init->IgnoreParens();
   return isa<StringLiteral>(Init) || isa<ObjCEncodeExpr>(Init);
 }