diff options
| -rw-r--r-- | clang/include/clang/Analysis/Analyses/PrintfFormatString.h | 4 | ||||
| -rw-r--r-- | clang/lib/Analysis/PrintfFormatString.cpp | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/clang/include/clang/Analysis/Analyses/PrintfFormatString.h b/clang/include/clang/Analysis/Analyses/PrintfFormatString.h index c5bac8c7266..6ae7e0c6e92 100644 --- a/clang/include/clang/Analysis/Analyses/PrintfFormatString.h +++ b/clang/include/clang/Analysis/Analyses/PrintfFormatString.h @@ -176,9 +176,9 @@ public: virtual void HandleInvalidConversionSpecifier(const char *conversionChar) {} - virtual void HandleFormatSpecifier(const FormatSpecifier &FS, + virtual bool HandleFormatSpecifier(const FormatSpecifier &FS, const char *startSpecifier, - const char *endSpecifier) {} + const char *endSpecifier) { return false; } }; bool ParseFormatString(FormatStringHandler &H, diff --git a/clang/lib/Analysis/PrintfFormatString.cpp b/clang/lib/Analysis/PrintfFormatString.cpp index 9907dc9d42b..1afa9ad2b71 100644 --- a/clang/lib/Analysis/PrintfFormatString.cpp +++ b/clang/lib/Analysis/PrintfFormatString.cpp @@ -233,7 +233,8 @@ bool ParseFormatSring(FormatStringHandler &H, const char *I, const char *E) { if (!FSR.hasValue()) break; // We have a format specifier. Pass it to the callback. - H.HandleFormatSpecifier(FSR.getValue(), FSR.getStart(), I); + if (!H.HandleFormatSpecifier(FSR.getValue(), FSR.getStart(), I)) + return false; } assert(I == E && "Format string not exhausted"); return false; |

