| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
It's declared in FormatString.h, so it shouldn't be defined in
PrintfFormatString.cpp.
llvm-svn: 146253
|
|
|
|
|
|
| |
It should reset the length modifier (unless it's a wchar_t string).
llvm-svn: 146252
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
lib/Analysis to lib/Sema which is cyclical.
llvm-svn: 145724
|
|
|
|
|
|
| |
Use the canonical type of the typedef to compare with the underlying type.
llvm-svn: 145702
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
The code had it backwards, thinking size_t was signed, and using that for "%zd".
Also let the analysis get the types for (u)intmax_t while we are at it.
llvm-svn: 143099
|
|
|
|
|
|
| |
accept any char, not just signed char. Fixes <rdar://problem/10303638>.
llvm-svn: 142908
|
|
|
|
| |
llvm-svn: 142433
|
|
|
|
|
|
|
|
| |
For PR11152. Make PrintSpecifier::fixType() suggest "%zu" for size_t, etc.
rather than looking at the underlying type and suggesting "%llu" or other
platform-specific length modifiers. Applies to C99 and C++11.
llvm-svn: 142342
|
|
|
|
|
|
|
|
| |
casts in ARC.
No semantic analysis yet.
llvm-svn: 142208
|
|
|
|
|
|
| |
Lack of half FP was a regression compared to llvm-gcc.
llvm-svn: 142016
|
|
|
|
| |
llvm-svn: 140367
|
|
|
|
| |
llvm-svn: 137896
|
|
|
|
|
|
|
|
| |
LLVM.h imports
them into the clang namespace.
llvm-svn: 135852
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
<rdar://problem/9607158>.
llvm-svn: 133024
|
|
|
|
|
|
|
|
| |
actually fix the warning. PR8781.
I'm not sure what the preferred way to write a test for whether a fixit is emitted.
llvm-svn: 130335
|
|
|
|
|
|
| |
integers (e.g., 'x', 'o').
llvm-svn: 130164
|
|
|
|
| |
llvm-svn: 124364
|
|
|
|
| |
llvm-svn: 124363
|
|
|
|
|
|
|
| |
prefix in a printf format string is matched
with the appropriate conversion specifier.
llvm-svn: 123055
|
|
|
|
|
|
| |
prefix to format conversions (POSIX extension).
llvm-svn: 123054
|
|
|
|
|
|
|
| |
16-bits in size. Implement this by splitting WChar into two enums, like we have
for char. This fixes a miscompmilation of XULRunner, PR8856.
llvm-svn: 122558
|
|
|
|
| |
llvm-svn: 120735
|
|
|
|
| |
llvm-svn: 119946
|
|
|
|
|
|
|
|
|
|
| |
it was really a 'char'
or a 'short'. This fixes that and allows the hints to suggest 'h' modifiers for small ints.
Patch by Justin Bogner!
llvm-svn: 116996
|
|
|
|
|
|
| |
compatible argument). Fixes PR 7981.
llvm-svn: 111978
|
|
|
|
| |
llvm-svn: 108906
|
|
|
|
| |
llvm-svn: 108905
|
|
|
|
|
|
|
| |
derived 'PrintfConversionSpecifier' from this class. We will do the same for
'ScanfConversionSpecifier'.
llvm-svn: 108903
|
|
|
|
| |
llvm-svn: 108901
|
|
|
|
|
|
| |
printf checking).
llvm-svn: 108900
|
|
|
|
| |
llvm-svn: 108899
|
|
|
|
|
|
| |
enum for scanf checking.
llvm-svn: 108898
|
|
|
|
|
|
|
| |
analagous enum in analyze_scanf. This is prep for refactoring the logic for handling
ConversionSpecifiers for both scanf and printf.
llvm-svn: 108897
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
types, updating callers of both isFloatingType() and
isRealFloatingType() accordingly. Caught at least one issue where we
allowed one to declare a vector of vectors (!), along with cleaning up
the standard-conversion logic for C++.
llvm-svn: 106595
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Precision toStrings shouldn't print a dot when they have no value.
- Length of char length modifier is now returned correctly.
- Added several fixit tests.
Note: fixit tests are currently broken due to a bug in HighlightRange. Marking as XFAIL for now.
M test/Sema/format-strings-fixit.c
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
llvm-svn: 106275
|
|
|
|
|
|
|
| |
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
llvm-svn: 106245
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added warning for undefined behavior when using field specifier
- Added warning for undefined behavior when using length modifier
- Fixed warnings for invalid flags
- Added warning for ignored flags
- Added fixits for the above warnings
- Fixed accuracy of detecting several undefined behavior conditions
- Receive normal warnings in addition to security warnings when using %n
- Fix bug where '+' flag would remain on unsigned conversion suggestions
Summary of changes:
- Added expanded tests
- Added/expanded warnings
- Added position info to OptionalAmounts for fixits
- Extracted optional flags to a wrapper class with position info for fixits
- Added several methods to validate a FormatSpecifier by component, each checking for undefined behavior
- Fixed conversion specifier checking to conform to C99 standard
- Added hooks to detect the invalid states in CheckPrintfHandler::HandleFormatSpecifier
Note: warnings involving the ' ' (space) flag are temporarily disabled until whitespace highlighting no longer triggers assertions. I will make a post about this on cfe-dev shortly.
M test/Sema/format-strings.c
M include/clang/Basic/DiagnosticSemaKinds.td
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
M lib/Sema/SemaChecking.cpp
llvm-svn: 106233
|
|
|
|
|
|
| |
PR 4468.
llvm-svn: 106151
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added some handling of flags that become invalid when changing the conversion specifier.
- Changed fixit behavior to remove unnecessary length modifiers.
- Separated some tests out and added some comments.
modified:
lib/Analysis/PrintfFormatString.cpp
test/Sema/format-strings-fixit.c
llvm-svn: 105807
|
|
|
|
|
|
|
| |
diagnosing this code as an error when it should, so I've filed
http://llvm.org/bugs/show_bug.cgi?id=7325.
llvm-svn: 105683
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Refactored LengthModifier to be a class.
- Added toString methods in all member classes of FormatSpecifier.
- FixIt suggestions keep user specified flags unless incorrect.
Limitations:
- The suggestions are not conversion specifier sensitive. For example, if we have a 'pad with zeroes' flag, and the correction is a string conversion specifier, we do not remove the flag. Clang will warn us on the next compilation.
A test/Sema/format-strings-fixit.c
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
M lib/Sema/SemaChecking.cpp
llvm-svn: 105680
|
|
|
|
| |
llvm-svn: 99479
|
|
|
|
|
|
| |
Fixes <rdar://problem/7700339>.
llvm-svn: 97482
|
|
|
|
|
|
| |
Along the way, coelesce some of the diagnostics.
llvm-svn: 97297
|
|
|
|
|
|
|
|
|
| |
index out of
Sema and into analyze_printf::ParseFormatString(). Also use a bitvector to determine
what arguments have been covered (instead of just checking to see if the last argument consumed is the max argument). This is prep. for support positional arguments (an IEEE extension).
llvm-svn: 97248
|
|
|
|
| |
llvm-svn: 97005
|