mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
141 lines
3.2 KiB
C
141 lines
3.2 KiB
C
typedef unsigned long long size_t;
|
|
void *memset(void *s, int c, unsigned long n);
|
|
void *__builtin_memset(void *s, int c, unsigned long n);
|
|
typedef int errno_t;
|
|
typedef unsigned int rsize_t;
|
|
errno_t memset_s(void *dest, rsize_t destsz, int ch, rsize_t count);
|
|
char *strcpy(char *dest, const char *src);
|
|
|
|
extern void use_pw(char *pw);
|
|
|
|
#define PW_SIZE 32
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): deleted
|
|
int func1(void) {
|
|
char pw1[PW_SIZE];
|
|
use_pw(pw1);
|
|
memset(pw1, 0, PW_SIZE); // BAD [NOT DETECTED]
|
|
return 0;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func1a(void) {
|
|
char pw1a[PW_SIZE];
|
|
use_pw(pw1a);
|
|
__builtin_memset(pw1a, 0, PW_SIZE); // BAD [NOT DETECTED]
|
|
return 0;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): deleted
|
|
char *func1b(void) {
|
|
char pw1b[PW_SIZE];
|
|
use_pw(pw1b);
|
|
memset(pw1b, 0, PW_SIZE); // BAD [NOT DETECTED]
|
|
pw1b[0] = pw1b[3] = 'a';
|
|
return 0;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: not deleted
|
|
// x86-64 clang 9.0.0: not deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func1c(char pw1c[PW_SIZE]) {
|
|
use_pw(pw1c);
|
|
memset(pw1c, 0, PW_SIZE); // GOOD
|
|
return 0;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: not deleted
|
|
// x86-64 clang 9.0.0: not deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
char pw1d[PW_SIZE];
|
|
int func1d() {
|
|
use_pw(pw1d);
|
|
memset(pw1d, 0, PW_SIZE); // GOOD
|
|
return 0;
|
|
}
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): deleted
|
|
char *func2(void) {
|
|
char pw2[PW_SIZE];
|
|
use_pw(pw2);
|
|
memset(pw2, 1, PW_SIZE); // BAD [NOT DETECTED]
|
|
return pw2;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): partially deleted
|
|
int func3(void) {
|
|
char pw3[PW_SIZE];
|
|
use_pw(pw3);
|
|
memset(pw3, 4, PW_SIZE); // BAD [NOT DETECTED]
|
|
return pw3[2];
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func4(void) {
|
|
char pw1a[PW_SIZE];
|
|
use_pw(pw1a);
|
|
__builtin_memset(pw1a + 3, 0, PW_SIZE - 3); // BAD [NOT DETECTED]
|
|
return 0;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func6(void) {
|
|
char pw1a[PW_SIZE];
|
|
use_pw(pw1a);
|
|
__builtin_memset(&pw1a[3], 0, PW_SIZE - 3); // BAD [NOT DETECTED]
|
|
return pw1a[2];
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func5(void) {
|
|
char pw1a[PW_SIZE];
|
|
use_pw(pw1a);
|
|
__builtin_memset(pw1a + 3, 0, PW_SIZE - 4); // GOOD
|
|
return pw1a[4];
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func7(void) {
|
|
char pw1a[PW_SIZE];
|
|
use_pw(pw1a);
|
|
__builtin_memset(&pw1a[3], 0, PW_SIZE - 5); // BAD [NOT DETECTED]
|
|
return 0;
|
|
}
|
|
|
|
// x86-64 gcc 9.2: not deleted
|
|
// x86-64 clang 9.0.0: not deleted
|
|
// x64 msvc v19.14 (WINE): not deleted
|
|
int func8(void) {
|
|
char pw1a[PW_SIZE];
|
|
use_pw(pw1a);
|
|
__builtin_memset(pw1a + pw1a[3], 0, PW_SIZE - 4); // GOOD
|
|
return pw1a[4];
|
|
}
|
|
|
|
// x86-64 gcc 9.2: deleted
|
|
// x86-64 clang 9.0.0: deleted
|
|
// x64 msvc v19.14 (WINE): deleted
|
|
char *func9(void) {
|
|
char pw1[PW_SIZE];
|
|
use_pw(pw1);
|
|
memset(pw1, 0, PW_SIZE); // BAD [NOT DETECTED]
|
|
return 0;
|
|
}
|