зеркало из https://github.com/microsoft/clang.git
Allow -Wformat to be enabled without -Wformat-security. GCC gates
-Wformat-security on -Wformat, not vice-versa. Fixes PR8486. Patch by Oleg Slezberg. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126096 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
a3f787c32b
Коммит
751969957e
|
@ -198,9 +198,11 @@ def Unused : DiagGroup<"unused",
|
|||
DiagCategory<"Unused Entity Issue">;
|
||||
|
||||
// Format settings.
|
||||
def Format : DiagGroup<"format", [FormatExtraArgs, FormatZeroLength, NonNull]>,
|
||||
def FormatSecurity : DiagGroup<"format-security">;
|
||||
def Format : DiagGroup<"format",
|
||||
[FormatExtraArgs, FormatZeroLength, NonNull,
|
||||
FormatSecurity]>,
|
||||
DiagCategory<"Format String Issue">;
|
||||
def FormatSecurity : DiagGroup<"format-security", [Format]>;
|
||||
def FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>;
|
||||
def FormatY2K : DiagGroup<"format-y2k", [Format]>;
|
||||
def Format2 : DiagGroup<"format=2",
|
||||
|
|
|
@ -340,3 +340,13 @@ void posix_extensions() {
|
|||
printf("%'f\n", (float) 1.0); // no-warning
|
||||
printf("%'p\n", (void*) 0); // expected-warning{{results in undefined behavior with 'p' conversion specifier}}
|
||||
}
|
||||
|
||||
// PR8486
|
||||
//
|
||||
// Test what happens when -Wformat is on, but -Wformat-security is off.
|
||||
#pragma GCC diagnostic warning "-Wformat"
|
||||
#pragma GCC diagnostic ignored "-Wformat-security"
|
||||
|
||||
void pr8486() {
|
||||
printf("%s", 1); // expected-warning{{conversion specifies type 'char *' but the argument has type 'int'}}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче