mirror of
https://github.com/github/codeql.git
synced 2026-04-27 09:45:15 +02:00
Merge pull request #1008 from geoffw0/wprintf
CPP: Clean up and fix FormattingFunction, FormatLiteral
This commit is contained in:
@@ -12,6 +12,7 @@ typedef struct _IO_FILE FILE;
|
||||
extern int printf(const char *fmt, ...);
|
||||
extern int vprintf(const char *fmt, va_list ap);
|
||||
extern int vfprintf(FILE *stream, const char *format, va_list ap);
|
||||
extern int wprintf(const wchar_t *format, ...);
|
||||
|
||||
#include "printf1.h"
|
||||
#include "real_world.h"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
| common.h:12:12:12:17 | printf | char | wchar_t | wchar_t |
|
||||
| common.h:15:12:15:18 | wprintf | wchar_t | char | wchar_t |
|
||||
| format.h:4:13:4:17 | error | char | wchar_t | wchar_t |
|
||||
| real_world.h:8:12:8:18 | fprintf | char | wchar_t | wchar_t |
|
||||
| real_world.h:33:6:33:12 | msg_out | char | wchar_t | wchar_t |
|
||||
|
||||
@@ -101,3 +101,21 @@ void fun1(unsigned char* a, unsigned char* b) {
|
||||
printf("%td\n", pdt); // GOOD
|
||||
printf("%td\n", a-b); // GOOD
|
||||
}
|
||||
|
||||
typedef unsigned int wint_t;
|
||||
|
||||
void test_chars(char c, wchar_t wc, wint_t wt)
|
||||
{
|
||||
printf("%c", c); // GOOD
|
||||
printf("%c", wc); // BAD [NOT DETECTED]
|
||||
printf("%c", wt); // BAD [NOT DETECTED]
|
||||
printf("%C", c); // BAD [NOT DETECTED]
|
||||
printf("%C", wc); // GOOD (converts to wint_t)
|
||||
printf("%C", wt); // GOOD
|
||||
wprintf(L"%c", c); // GOOD
|
||||
wprintf(L"%c", wc); // BAD [NOT DETECTED]
|
||||
wprintf(L"%c", wt); // BAD [NOT DETECTED]
|
||||
wprintf(L"%C", c); // BAD [NOT DETECTED]
|
||||
wprintf(L"%C", wc); // GOOD (converts to wint_t)
|
||||
wprintf(L"%C", wt); // GOOD
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ typedef struct _IO_FILE FILE;
|
||||
extern int printf(const char *fmt, ...);
|
||||
extern int vprintf(const char *fmt, va_list ap);
|
||||
extern int vfprintf(FILE *stream, const char *format, va_list ap);
|
||||
extern int wprintf(const wchar_t *format, ...);
|
||||
|
||||
#include "printf1.h"
|
||||
#include "real_world.h"
|
||||
|
||||
@@ -101,3 +101,21 @@ void fun1(unsigned char* a, unsigned char* b) {
|
||||
printf("%td\n", pdt); // GOOD
|
||||
printf("%td\n", a-b); // GOOD
|
||||
}
|
||||
|
||||
typedef unsigned int wint_t;
|
||||
|
||||
void test_chars(char c, wchar_t wc, wint_t wt)
|
||||
{
|
||||
printf("%c", c); // GOOD
|
||||
printf("%c", wc); // BAD [NOT DETECTED]
|
||||
printf("%c", wt); // BAD [NOT DETECTED]
|
||||
printf("%C", c); // BAD [NOT DETECTED]
|
||||
printf("%C", wc); // GOOD (converts to wint_t)
|
||||
printf("%C", wt); // GOOD
|
||||
wprintf(L"%c", c); // BAD [NOT DETECTED]
|
||||
wprintf(L"%c", wc); // GOOD (converts to wint_t)
|
||||
wprintf(L"%c", wt); // GOOD
|
||||
wprintf(L"%C", c); // GOOD
|
||||
wprintf(L"%C", wc); // BAD [NOT DETECTED]
|
||||
wprintf(L"%C", wt); // BAD [NOT DETECTED]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user