2018-01-23 17:18:47 +01:00
|
|
|
// To test:
|
|
|
|
// ~/cppcheck/cppcheck --dump cert-test.c && python ../cert.py -verify cert-test.c.dump
|
|
|
|
|
|
|
|
struct S {
|
|
|
|
short a;
|
|
|
|
short b;
|
|
|
|
};
|
|
|
|
|
|
|
|
#pragma pack()
|
|
|
|
struct PackedStruct {
|
|
|
|
short a;
|
|
|
|
short b;
|
|
|
|
};
|
|
|
|
|
2018-04-03 13:35:19 +02:00
|
|
|
void dostuff(int *data);
|
|
|
|
|
|
|
|
void exp05()
|
|
|
|
{
|
|
|
|
const int x = 42;
|
2018-04-03 15:12:01 +02:00
|
|
|
int y = (int)x;
|
|
|
|
|
2018-04-03 13:35:19 +02:00
|
|
|
int *p;
|
|
|
|
p = (int *)&x; // cert-EXP05-C
|
|
|
|
|
|
|
|
const int data[] = {1,2,3,4};
|
|
|
|
dostuff(data); // cert-EXP05-C
|
|
|
|
}
|
|
|
|
|
2018-01-23 17:18:47 +01:00
|
|
|
void exp42()
|
|
|
|
{
|
|
|
|
struct S s1 = {1,2};
|
|
|
|
struct S s2 = {1,2};
|
|
|
|
memcmp(&s1, &s2, sizeof(struct S)); // cert-EXP42-C
|
|
|
|
|
|
|
|
struct PackedStruct s3 = {1,2};
|
|
|
|
struct PackedStruct s4 = {1,2};
|
|
|
|
memcmp(&s3, &s4, sizeof(struct S));
|
|
|
|
}
|
|
|
|
|
2018-01-23 22:43:29 +01:00
|
|
|
void exp46()
|
|
|
|
{
|
|
|
|
if ((x == y) & z) {} // cert-EXP46-c
|
|
|
|
}
|
|
|
|
|
2018-01-23 17:18:47 +01:00
|
|
|
unsigned char int31(int x)
|
|
|
|
{
|
|
|
|
x = (unsigned char)1000; // cert-INT31-c
|
|
|
|
x = (signed char)0xff; // cert-INT31-c
|
|
|
|
x = (unsigned char)-1; // cert-INT31-c
|
|
|
|
x = (unsigned long long)-1; // cert-INT31-c
|
|
|
|
}
|