Lines Matching refs:printf
10 int printf(const char *restrict, ...); // expected-note{{passing argument to parameter here}}
30 printf(s); // expected-warning {{format string is not a string literal}}
49 printf("abc"
51 printf("abc\
58 printf("%*d", (unsigned) 1, 1); // no-warning
70 printf(s); // expected-warning {{format string is not a string literal}}
84 printf(i == 1 ? "yes" : "no"); // no-warning
85 printf(i == 0 ? (i == 1 ? "yes" : "no") : "dont know"); // no-warning
86 printf(i == 0 ? (i == 1 ? s : "no") : "dont know"); // expected-warning{{format string is not a string literal}}
87 printf("yes" ?: "no %d", 1); // expected-warning{{data argument not used by format string}}
94 printf("%n", b); // expected-warning{{format specifies type 'int *' but the argument has type 'char *'}}
95 printf("%n", &x); // no-warning
97 printf("%hhn", (signed char*)0); // no-warning
98 printf("%hhn", (char*)0); // no-warning
99 printf("%hhn", (unsigned char*)0); // no-warning
100 printf("%hhn", (int*)0); // expected-warning{{format specifies type 'signed char *' but the argument has type 'int *'}}
102 printf("%hn", (short*)0); // no-warning
103 printf("%hn", (unsigned short*)0); // no-warning
104 printf("%hn", (int*)0); // expected-warning{{format specifies type 'short *' but the argument has type 'int *'}}
106 printf("%n", (int*)0); // no-warning
107 printf("%n", (unsigned int*)0); // no-warning
108 printf("%n", (char*)0); // expected-warning{{format specifies type 'int *' but the argument has type 'char *'}}
110 printf("%ln", (long*)0); // no-warning
111 printf("%ln", (unsigned long*)0); // no-warning
112 printf("%ln", (int*)0); // expected-warning{{format specifies type 'long *' but the argument has type 'int *'}}
114 printf("%lln", (long long*)0); // no-warning
115 printf("%lln", (unsigned long long*)0); // no-warning
116 printf("%lln", (int*)0); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
118 printf("%qn", (long long*)0); // no-warning
119 printf("%qn", (unsigned long long*)0); // no-warning
120 printf("%qn", (int*)0); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
122 printf("%Ln", 0); // expected-warning{{length modifier 'L' results in undefined behavior or no effect with 'n' conversion specifier}}
128 printf("%s%lb%d","unix",10,20); // expected-warning {{invalid conversion specifier 'b'}}
136 printf("\0this is bogus%d",1); // expected-warning {{string contains '\0'}}
138 printf("%\0d",1); // expected-warning {{string contains '\0'}}
159 printf(L"foo %d",2); // expected-warning {{incompatible pointer types}}, expected-warning {{should not be a wide string}}
164 printf("%*d"); // expected-warning {{'*' specified field width is missing a matching 'int' argument}}
165 printf("%.*d"); // expected-warning {{'.*' specified field precision is missing a matching 'int' argument}}
166 printf("%*d",12,x); // no-warning
167 printf("%*d","foo",x); // expected-warning {{field width should have type 'int', but argument has type 'char *'}}
168 printf("%.*d","foo",x); // expected-warning {{field precision should have type 'int', but argument has type 'char *'}}
171 void __attribute__((format(printf,1,3))) myprintf(const char*, int blah, ...);
184 printf(s1); // no-warning
185 printf(s2); // no-warning
186 printf(s3); // expected-warning{{not a string literal}}
187 printf(s4); // expected-warning{{not a string literal}}
188 printf(s5); // expected-warning{{not a string literal}}
198 printf(P); // expected-warning {{format string is not a string literal (potentially insecure)}}
199 printf(P, 42);
208 printf("%s"); // expected-warning{{more '%' conversions than data arguments}}
209 printf("%@", 12); // expected-warning{{invalid conversion specifier '@'}}
210 printf("\0"); // expected-warning{{format string contains '\0' within the string body}}
211 printf("xs\0"); // expected-warning{{format string contains '\0' within the string body}}
212 printf("%*d\n"); // expected-warning{{'*' specified field width is missing a matching 'int' argument}}
213 printf("%*.*d\n", x); // expected-warning{{'.*' specified field precision is missing a matching 'int' argument}}
214 printf("%*d\n", f, x); // expected-warning{{field width should have type 'int', but argument has type 'double'}}
215 printf("%*.*d\n", x, f, x); // expected-warning{{field precision should have type 'int', but argument has type 'double'}}
216 printf("%**\n"); // expected-warning{{invalid conversion specifier '*'}}
217 printf("%d%d\n", x); // expected-warning{{more '%' conversions than data arguments}}
218 printf("%d\n", x, x); // expected-warning{{data argument not used by format string}}
219 printf("%W%d%Z\n", x, x, x); // expected-warning{{invalid conversion specifier 'W'}} expected-warning{{invalid conversion specifier 'Z'}}
220 printf("%"); // expected-warning{{incomplete format specifier}}
221 printf("%.d", x); // no-warning
222 printf("%.", x); // expected-warning{{incomplete format specifier}}
223 printf("%f", 4); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
224 printf("%qd", lli); // no-warning
225 printf("%qd", x); // expected-warning{{format specifies type 'long long' but the argument has type 'int'}}
226 printf("%qp", (void *)0); // expected-warning{{length modifier 'q' results in undefined behavior or no effect with 'p' conversion specifier}}
227 printf("hhX %hhX", (unsigned char)10); // no-warning
228 printf("llX %llX", (long long) 10); // no-warning
230 printf("%d", (unsigned char) 10); // no-warning
231 printf("%d", (long long) 10); // expected-warning{{format specifies type 'int' but the argument has type 'long long'}}
232 printf("%Lf\n", (long double) 1.0); // no-warning
233 printf("%f\n", (long double) 1.0); // expected-warning{{format specifies type 'double' but the argument has type 'long double'}}
235 printf("%.0Lf", (long double) 1.0); // no-warning
236 printf("%c\n", "x"); // expected-warning{{format specifies type 'int' but the argument has type 'char *'}}
237 printf("%c\n", 1.23); // expected-warning{{format specifies type 'int' but the argument has type 'double'}}
238 printf("Format %d, is %! %f", 1, 2, 4.4); // expected-warning{{invalid conversion specifier '!'}}
244 printf("%hhu", (short) 10); // expected-warning{{format specifies type 'unsigned char' but the argument has type 'short'}}
245 printf("%hu\n", (unsigned char) 1); // expected-warning{{format specifies type 'unsigned short' but the argument has type 'unsigned char'}}
246 printf("%hu\n", (uint8_t)1); // expected-warning{{format specifies type 'unsigned short' but the argument has type 'uint8_t'}}
250 printf("%p", p); // no-warning
251 printf("%p", 123); // expected-warning{{format specifies type 'void *' but the argument has type 'int'}}
252 printf("%.4p", p); // expected-warning{{precision used with 'p' conversion specifier, resulting in undefined behavior}}
253 printf("%+p", p); // expected-warning{{flag '+' results in undefined behavior with 'p' conversion specifier}}
254 printf("% p", p); // expected-warning{{flag ' ' results in undefined behavior with 'p' conversion specifier}}
255 printf("%0p", p); // expected-warning{{flag '0' results in undefined behavior with 'p' conversion specifier}}
256 printf("%s", s); // no-warning
257 printf("%+s", p); // expected-warning{{flag '+' results in undefined behavior with 's' conversion specifier}}
258 printf("% s", p); // expected-warning{{flag ' ' results in undefined behavior with 's' conversion specifier}}
259 printf("%0s", p); // expected-warning{{flag '0' results in undefined behavior with 's' conversion specifier}}
264 printf ("%.4s\n", buf); // no-warning
265 printf ("%.4s\n", &buf); // expected-warning{{format specifies type 'char *' but the argument has type 'unsigned char (*)[4]'}}
273 printf("bel: '0%hhd'\n", bel); // no-warning
274 printf("x: '0%hhd'\n", x); // expected-warning {{format specifies type 'char' but the argument has type 'short'}}
288 void f0(int_t x) { printf("%d\n", x); }
294 printf("%S", s); // no-warning
295 printf("%s", s); // expected-warning{{format specifies type 'char *' but the argument has type 'wchar_t *'}}
296 printf("%C", s[0]); // no-warning
297 printf("%c", s[0]);
300 // printf("%C", 10);
301 printf("%S", "hello"); // expected-warning{{but the argument has type 'char *'}}
308 printf("%0$", (int)2); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
309 printf("%1$*0$d", (int) 2); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
310 printf("%1$d", (int) 2); // no-warning
311 printf("%1$d", (int) 2, 2); // expected-warning{{data argument not used by format string}}
312 printf("%1$d%1$f", (int) 2); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
313 printf("%1$2.2d", (int) 2); // no-warning
314 printf("%2$*1$.2d", (int) 2, (int) 3); // no-warning
315 printf("%2$*8$d", (int) 2, (int) 3); // expected-warning{{specified field width is missing a matching 'int' argument}}
316 printf("%%%1$d", (int) 2); // no-warning
317 printf("%1$d%%", (int) 2); // no-warning
321 void myprintf_PR_6697(const char *format, int x, ...) __attribute__((__format__(printf,1, 3)));
339 printf("%hhs", "foo"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
340 printf("%1$zp", (void *)0); // expected-warning{{length modifier 'z' results in undefined behavior or no effect with 'p' conversion specifier}}
341 printf("%ls", L"foo"); // no-warning
342 printf("%#.2Lf", (long double)1.234); // no-warning
345 printf("%#p", (void *) 0); // expected-warning{{flag '#' results in undefined behavior with 'p' conversion specifier}}
346 printf("%0d", -1); // no-warning
347 printf("%#n", (int *) 0); // expected-warning{{flag '#' results in undefined behavior with 'n' conversion specifier}}
348 printf("%-n", (int *) 0); // expected-warning{{flag '-' results in undefined behavior with 'n' conversion specifier}}
349 printf("%-p", (void *) 0); // no-warning
352 printf("%.2c", 'a'); // expected-warning{{precision used with 'c' conversion specifier, resulting in undefined behavior}}
353 printf("%1n", (int *) 0); // expected-warning{{field width used with 'n' conversion specifier, resulting in undefined behavior}}
354 printf("%.9n", (int *) 0); // expected-warning{{precision used with 'n' conversion specifier, resulting in undefined behavior}}
357 printf("% +f", 1.23); // expected-warning{{flag ' ' is ignored when flag '+' is present}}
358 printf("%+ f", 1.23); // expected-warning{{flag ' ' is ignored when flag '+' is present}}
359 printf("%0-f", 1.23); // expected-warning{{flag '0' is ignored when flag '-' is present}}
360 printf("%-0f", 1.23); // expected-warning{{flag '0' is ignored when flag '-' is present}}
361 printf("%-+f", 1.23); // no-warning
367 printf("%lc", c); // no-warning
368 printf("%lc", 1.0); // expected-warning{{the argument has type 'double'}}
369 printf("%lc", (char) 1); // no-warning
370 printf("%lc", &c); // expected-warning{{the argument has type 'wint_t *'}}
375 printf("%lc", c2); // no-warning
383 printf(0); // no-warning
397 printf("%#x\n", 10);
398 printf("%#X\n", 10);
404 printf("%'d\n", 123456789); // no-warning
405 printf("%'i\n", 123456789); // no-warning
406 printf("%'f\n", (float) 1.0); // no-warning
407 printf("%'p\n", (void*) 0); // expected-warning{{results in undefined behavior with 'p' conversion specifier}}
417 printf("%s", 1); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
423 printf(__PRETTY_FUNCTION__); // no-warning
424 printf(__func__); // no-warning
427 int printf(const char * restrict, ...) __attribute__((__format__ (__printf__, 1, 2)));
430 printf("%s", 2); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
434 printf("%c", y); // no-warning
435 printf("%hhu", x); // no-warning
436 printf("%hhi", y); // no-warning
437 printf("%hhi", x); // no-warning
438 printf("%c", x); // no-warning
439 printf("%hhu", y); // no-warning
447 printf("%@", 12); // no-warning
455 // Test that the printf call site is where the warning is attached. If the
459 printf(kFormat1, 0); // expected-warning{{more '%' conversions than data arguments}}
460 printf("%d %s\n", 0); // expected-warning{{more '%' conversions than data arguments}}
463 printf(kFormat2, 1, "foo"); // expected-warning{{data argument position '18' exceeds the number of data arguments (2)}}
464 printf("%18$s\n", 1, "foo"); // expected-warning{{data argument position '18' exceeds the number of data arguments (2)}}
467 printf(kFormat4, 5); // expected-warning{{invalid conversion specifier 'y'}}
468 printf("%y", 5); // expected-warning{{invalid conversion specifier 'y'}}
471 printf(kFormat5, 5); // expected-warning{{incomplete format specifier}}
472 printf("%.", 5); // expected-warning{{incomplete format specifier}}
475 printf(kFormat6, 5); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
476 printf("%s", 5); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
479 printf(kFormat7, 5); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
480 printf("%0$", 5); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
483 printf(kFormat8, 4, 4); // expected-warning{{cannot mix positional and non-positional arguments in format string}}
484 printf("%1$d %d", 4, 4); // expected-warning{{cannot mix positional and non-positional arguments in format string}}
487 printf(kFormat9, 4, 4); // expected-warning{{format string is empty}}
488 printf("", 4, 4); // expected-warning{{format string is empty}}
491 printf(kFormat10, 4); // expected-warning{{format string contains '\0' within the string body}}
492 printf("\0%d", 4); // expected-warning{{format string contains '\0' within the string body}}
495 printf(kFormat11); // expected-warning{{'*' specified field width is missing a matching 'int' argument}}
496 printf("%*d"); // expected-warning{{'*' specified field width is missing a matching 'int' argument}}
499 printf(kFormat12, 4.4); // expected-warning{{field width should have type 'int', but argument has type 'double'}}
500 printf("%*d", 4.4); // expected-warning{{field width should have type 'int', but argument has type 'double'}}
504 printf(kFormat13, p); // expected-warning{{precision used with 'p' conversion specifier, resulting in undefined behavior}}
505 printf("%.3p", p); // expected-warning{{precision used with 'p' conversion specifier, resulting in undefined behavior}}
508 printf(kFormat14, "a"); // expected-warning{{flag '0' results in undefined behavior with 's' conversion specifier}}
509 printf("%0s", "a"); // expected-warning{{flag '0' results in undefined behavior with 's' conversion specifier}}
512 printf(kFormat15, "a"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
513 printf("%hhs", "a"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
516 printf(kFormat16, 5); // expected-warning{{flag '0' is ignored when flag '-' is present}}
517 printf("%-0d", 5); // expected-warning{{flag '0' is ignored when flag '-' is present}}
521 printf(1 ? "yes %d" : "no %d"); // expected-warning 2{{more '%' conversions than data arguments}}
524 printf(kFormat17, (int[]){0}); // expected-warning{{format specifies type 'unsigned short' but the argument}}
526 printf("%a", (long double)0); // expected-warning{{format specifies type 'double' but the argument has type 'long double'}}
530 printf(kFormat18, 0); // expected-warning{{format specifies type}}
534 printf(kFormat19,
559 printf("%hhx", c);
581 printf("%n", cip); // expected-warning{{format specifies type 'int *' but the argument has type 'const int *'}}
582 printf("%n", cvip); // expected-warning{{format specifies type 'int *' but the argument has type 'const volatile int *'}}
584 printf("%n", vip); // No warning.
585 printf("%p", cip); // No warning.
586 printf("%p", cvip); // No warning.
591 printf("%n", (ip_t)0); // No warning.
592 printf("%n", (cip_t)0); // expected-warning{{format specifies type 'int *' but the argument has type 'cip_t' (aka 'const int *')}}