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
42 lines
1.8 KiB
C++
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);
|
|
}
|