Files
tubestation/build/clang-plugin/tests/TestSprintfLiteral.cpp
Mike Hommey 84729233a6 Bug 1850307 - Avoid truncation in TestSprintfLiteral.cpp. r=nika
Clang trunk started to warn about uses of snprintf that always lead to
truncation. The warning is hit in the test, but it's not really an
interesting part of the test, so prevent clang from warning by making
the format string smaller.

Differential Revision: https://phabricator.services.mozilla.com/D186990
2023-08-28 20:53:30 +00:00

42 lines
1.8 KiB
C++

#include <cstdio>
void bad() {
char x[100];
snprintf(x, sizeof(x), "bar"); // expected-error {{Use SprintfLiteral instead of snprintf when writing into a character array.}} expected-note {{This will prevent passing in the wrong size to snprintf accidentally.}}
snprintf(x, 100, "bar"); // expected-error {{Use SprintfLiteral instead of snprintf when writing into a character array.}} expected-note {{This will prevent passing in the wrong size to snprintf accidentally.}}
const int hundred = 100;
snprintf(x, hundred, "bar"); // expected-error {{Use SprintfLiteral instead of snprintf when writing into a character array.}} expected-note {{This will prevent passing in the wrong size to snprintf accidentally.}}
}
void ok() {
char x[100];
int y;
snprintf(x, sizeof(y), "foo");
snprintf(x, 50, "foo");
int nothundred = 100;
nothundred = 99;
snprintf(x, nothundred, "foo");
}
void vargs_bad(va_list args) {
char x[100];
vsnprintf(x, sizeof(x), "bar", args); // expected-error {{Use VsprintfLiteral instead of vsnprintf when writing into a character array.}} expected-note {{This will prevent passing in the wrong size to vsnprintf accidentally.}}
vsnprintf(x, 100, "bar", args); // expected-error {{Use VsprintfLiteral instead of vsnprintf when writing into a character array.}} expected-note {{This will prevent passing in the wrong size to vsnprintf accidentally.}}
const int hundred = 100;
vsnprintf(x, hundred, "bar", args); // expected-error {{Use VsprintfLiteral instead of vsnprintf when writing into a character array.}} expected-note {{This will prevent passing in the wrong size to vsnprintf accidentally.}}
}
void vargs_good(va_list args) {
char x[100];
int y;
vsnprintf(x, sizeof(y), "foo", args);
vsnprintf(x, 50, "foo", args);
int nothundred = 100;
nothundred = 99;
vsnprintf(x, nothundred, "foo", args);
}