]> granicus.if.org Git - clang/commitdiff
Alternate format string checking: check if the number of format specifiers exceeds...
authorTed Kremenek <kremenek@apple.com>
Fri, 29 Jan 2010 01:43:31 +0000 (01:43 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 29 Jan 2010 01:43:31 +0000 (01:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94785 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaChecking.cpp

index d856a2323a444382d63e752af334600256f17fee..81c309be51b497109f9161923e2d0b7af085b943 100644 (file)
@@ -1418,6 +1418,18 @@ CheckPrintfHandler::HandleFormatSpecifier(const analyze_printf::FormatSpecifier
     return true;
   }
   
+  
+  // The remaining checks depend on the data arguments.
+  if (HasVAListArg)
+    return true;
+  
+  if (NumConversions > NumDataArgs) {
+    S.Diag(getLocationOfByte(CS.getStart()),
+           diag::warn_printf_insufficient_data_args)
+      << getFormatRange();    
+    // Don't do any more checking.
+    return false;
+  }
 
   return true;
 }