Hans Wennborg
6073e31baa
scanf: parse the 'm' length modifier, and check that the right arguments
...
are used with that and the 'a' length modifier.
llvm-svn: 148029
2012-01-12 17:11:12 +00:00
Hans Wennborg
fd950878fa
scanf analysis: the 'a' length modifier is valid with a scanlist
...
Before r148025 we (accidentally) didn't check whether a length modifier is
appropriate for a scanlist, but now we do.
llvm-svn: 148026
2012-01-12 15:07:16 +00:00
Hans Wennborg
e5f554ac48
Support the 'a' scanf length modifier as an extension in C++.
...
It should not be supported in C++11, since that uses the C99 standard
library, in which 'a' is a format specifier.
llvm-svn: 147310
2011-12-28 13:10:50 +00:00
Hans Wennborg
23926bd2d7
Support the 'a' length modifier in scanf format strings as a C90
...
extension.
This fixes gcc.dg/format/c90-scanf-3.c and ext-4.c (test for excess
errors).
llvm-svn: 146649
2011-12-15 10:25:47 +00:00
Hans Wennborg
a5b1aa99c7
Make printf warnings refer to wint_t and wchar_t by name
...
in addition to underlying type.
llvm-svn: 146254
2011-12-09 12:22:12 +00:00
Hans Wennborg
a8b042d31a
Move definition of ConversionSpecifier::toString() to FormatString.cpp
...
It's declared in FormatString.h, so it shouldn't be defined in
PrintfFormatString.cpp.
llvm-svn: 146253
2011-12-09 11:11:07 +00:00
Hans Wennborg
772e9270f6
Make printf warnings refer to intmax_t et al. by name
...
in addition to underlying type.
For example, the warning for printf("%zu", 42.0);
changes from "conversion specifies type 'unsigned long'" to "conversion
specifies type 'size_t' (aka 'unsigned long')"
(This is a second attempt after r145697, which got reverted.)
llvm-svn: 146032
2011-12-07 10:33:11 +00:00
Nick Lewycky
45ccba64ab
Revert r145697 and dependent patch r145702. It added a dependency from
...
lib/Analysis to lib/Sema which is cyclical.
llvm-svn: 145724
2011-12-02 23:21:43 +00:00
Hans Wennborg
70f7213d2c
Make conversion specifier warning refer to typedef if possible.
...
For example, the warning for printf("%zu", 42.0);
changes from "conversion specifies type 'unsigned long'" to "conversion
specifies type 'size_t' (aka 'unsigned long')"
llvm-svn: 145697
2011-12-02 19:22:15 +00:00
Ted Kremenek
74e82bd190
Tweak printf format string parsing to accept 'hh' conversion specifier to accept any char, not just signed char. Fixes <rdar://problem/10303638>.
...
llvm-svn: 142908
2011-10-25 04:20:41 +00:00
David Blaikie
aa347f9392
Removing a bunch of dead returns/breaks after llvm_unreachables.
...
llvm-svn: 140407
2011-09-23 20:26:49 +00:00
David Blaikie
83d382b1ca
Switch assert(0/false) llvm_unreachable.
...
llvm-svn: 140367
2011-09-23 05:06:16 +00:00
Chris Lattner
0e62c1cc0b
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
...
them into the clang namespace.
llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Ted Kremenek
d0c2afd2c3
Revert r135147 and r135075. The consensus was that this wasn't the right thing to do.
...
llvm-svn: 135152
2011-07-14 17:05:32 +00:00
Ted Kremenek
2df6485d51
Add extra sanity checking in FormatString::matchesType() that we are comparing integers to integers. This happens not to be an issue now, but the extra check helps future proof in case of future refactorings.
...
llvm-svn: 135147
2011-07-14 15:43:21 +00:00
Ted Kremenek
ba84cf53bc
Reapply r135075, but modify format-strings.c and format-strings-fixit.c test cases to be more portable with an explicit target triple.
...
llvm-svn: 135134
2011-07-14 06:49:52 +00:00
NAKAMURA Takumi
91d831bc2d
Revert r135075, "format string checking: long and int have the same widths on 32-bit, so we shouldn't warn about using"
...
It fails on freebsd, mingw and msvc10.
llvm-svn: 135129
2011-07-14 05:16:18 +00:00
Ted Kremenek
60654d697a
format string checking: long and int have the same widths on 32-bit, so we shouldn't warn about using
...
an "int" format specifier with a "long" type in 32-bit.
llvm-svn: 135075
2011-07-13 20:20:58 +00:00
Ted Kremenek
cc47e0fad1
Re-relax conversion specifier checking for printf format strings and conversion specifiers. My recent change was a mistake.
...
llvm-svn: 135048
2011-07-13 17:35:14 +00:00
Ted Kremenek
1d3fb8af68
Fix inversion in argument type checking for format strings with conversion specifiers for character types.
...
llvm-svn: 135046
2011-07-13 17:25:47 +00:00
Daniel Dunbar
421bb42c9f
Revert r133024, "[format strings] correctly suggest correct type for '%@'
...
specifiers. Fixes <rdar://problem/9607158>." because it causes false positives
on some code that uses CF toll free bridging.
- I'll let Doug or Ted figure out the right fix here, possibly just to accept
any pointer type.
llvm-svn: 134041
2011-06-28 23:33:55 +00:00
Ted Kremenek
192ed0b7ee
[format strings] correctly suggest correct type for '%@' specifiers. Fixes <rdar://problem/9607158>.
...
llvm-svn: 133024
2011-06-14 22:56:51 +00:00
Anders Carlsson
3fd50319d3
Don't warn when matching %p to nullptr.
...
llvm-svn: 118344
2010-11-06 14:58:53 +00:00
Ted Kremenek
5f0c066062
Fix printf format string checking for '%lc' (which expects a wint_t or compatible argument). Fixes PR 7981.
...
llvm-svn: 111978
2010-08-24 22:24:51 +00:00
Eli Friedman
04831926ec
Detabify.
...
llvm-svn: 111768
2010-08-22 01:00:03 +00:00
Michael J. Spencer
2c35bc1232
Revert r109428 "Hoist argument type checking into CheckFormatHandler. This is prep for scanf format"
...
Got errors about ASTContext being undefined with Visual Studio 2010.
llvm-svn: 109491
2010-07-27 04:46:02 +00:00
Ted Kremenek
df4472bca0
Hoist argument type checking into CheckFormatHandler. This is prep for scanf format
...
string argument type checking.
llvm-svn: 109428
2010-07-26 19:45:54 +00:00
Ted Kremenek
ea28f83a5f
Move 'hasValidLengthModifier' from PrintfFormatSpecifier to FormatSpecifier.
...
llvm-svn: 108906
2010-07-20 20:04:42 +00:00
Ted Kremenek
0208793e41
Add most of the boilerplate support for scanf format string checking. This includes
...
handling the parsing of scanf format strings and hooking the checking into Sema.
Most of this checking logic piggybacks on what was already there for checking printf format
strings, but the checking logic has been refactored to support both.
What is left to be done is to support argument type checking in format strings and of course
fix the usual tail of bugs that will follow.
llvm-svn: 108500
2010-07-16 02:11:22 +00:00