[cfe-commits] r148025 - in /cfe/trunk: lib/Analysis/ScanfFormatString.cpp test/Sema/format-strings-scanf.c

Hans Wennborg hans at hanshq.net
Thu Jan 12 06:44:55 PST 2012


Author: hans
Date: Thu Jan 12 08:44:54 2012
New Revision: 148025

URL: http://llvm.org/viewvc/llvm-project?rev=148025&view=rev
Log:
scanf analysis: don't bail out after successful parse of scanlist

Modified:
    cfe/trunk/lib/Analysis/ScanfFormatString.cpp
    cfe/trunk/test/Sema/format-strings-scanf.c

Modified: cfe/trunk/lib/Analysis/ScanfFormatString.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/ScanfFormatString.cpp?rev=148025&r1=148024&r2=148025&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/ScanfFormatString.cpp (original)
+++ cfe/trunk/lib/Analysis/ScanfFormatString.cpp Thu Jan 12 08:44:54 2012
@@ -176,7 +176,7 @@
   }
   ScanfConversionSpecifier CS(conversionPosition, k);
   if (k == ScanfConversionSpecifier::ScanListArg) {
-    if (!ParseScanList(H, CS, I, E))
+    if (ParseScanList(H, CS, I, E))
       return true;
   }
   FS.setConversionSpecifier(CS);

Modified: cfe/trunk/test/Sema/format-strings-scanf.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/format-strings-scanf.c?rev=148025&r1=148024&r2=148025&view=diff
==============================================================================
--- cfe/trunk/test/Sema/format-strings-scanf.c (original)
+++ cfe/trunk/test/Sema/format-strings-scanf.c Thu Jan 12 08:44:54 2012
@@ -68,6 +68,10 @@
   vsscanf(buf, "%[abc", ap); // expected-warning{{no closing ']' for '%[' in scanf format string}}
 }
 
+void test_scanlist(int *ip) {
+  scanf("%[abc]", ip); // expected-warning{{conversion specifies type 'char *' but the argument has type 'int *'}}
+}
+
 void test_alloc_extension(char **sp, wchar_t **lsp) {
   /* Make sure "%a" gets parsed as a conversion specifier for float,
    * even when followed by an 's', 'S' or '[', which would cause it to be





More information about the cfe-commits mailing list