mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-27 23:38:59 -04:00

"I've coded up some support in clang to flag warnings for non-constant format strings used in calls to printf-like functions (all the functions listed in "man fprintf"). Non-constant format strings are a source of many security exploits in C/C++ programs, and I believe are currently detected by gcc using the flag -Wformat-nonliteral." llvm-svn: 41003
24 lines
982 B
C
24 lines
982 B
C
// RUN: clang -parse-ast-check %s
|
|
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
|
|
void check_string_literal( FILE* fp, const char* s, char *buf, ... ) {
|
|
|
|
char * b;
|
|
va_list ap;
|
|
va_start(ap,buf);
|
|
|
|
printf(s); // expected-warning {{format string is not a string literal}}
|
|
vprintf(s,ap); // expected-warning {{format string is not a string liter}}
|
|
fprintf(fp,s); // expected-warning {{format string is not a string literal}}
|
|
vfprintf(fp,s,ap); // expected-warning {{format string is not a string lit}}
|
|
asprintf(&b,s); // expected-warning {{format string is not a string lit}}
|
|
vasprintf(&b,s,ap); // expected-warning {{format string is not a string lit}}
|
|
sprintf(buf,s); // expected-warning {{format string is not a string literal}}
|
|
snprintf(buf,2,s); // expected-warning {{format string is not a string lit}}
|
|
vsprintf(buf,s,ap); // expected-warning {{format string is not a string lit}}
|
|
vsnprintf(buf,2,s,ap); // expected-warning {{mat string is not a string lit}}
|
|
}
|
|
|