Skip to content

Commit 409ff60

Browse files
committed
work
1 parent 98667ec commit 409ff60

File tree

1 file changed

+78
-0
lines changed
  • c/cert/test/rules/CON34-C

1 file changed

+78
-0
lines changed

c/cert/test/rules/CON34-C/main.c

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <threads.h>
4+
5+
static tss_t k;
6+
7+
void t1(void *v) {
8+
int *value = (int *)v;
9+
int a = *value + 1;
10+
}
11+
12+
void t2(void *v) {
13+
int *value =
14+
tss_get(k); // NON_COMPLIANT (AUDIT) - A threaded function without a
15+
// `tss_set` should be considered suspicious.
16+
int a = *value + 1;
17+
}
18+
19+
void m1() {
20+
thrd_t id;
21+
int value;
22+
23+
thrd_create(&id, t1, &value); // NON_COMPLIANT
24+
}
25+
26+
void m2() {
27+
thrd_t id;
28+
int *value = (int *)malloc(sizeof(int));
29+
30+
thrd_create(&id, t1, value); // COMPLIANT - free is never called
31+
}
32+
33+
void m3() {
34+
thrd_t id;
35+
int *value = (int *)malloc(sizeof(int));
36+
37+
thrd_create(&id, t1,
38+
value); // COMPLIANT - free is called without synchronization,
39+
// however this is beyond the scope of this query.
40+
free(value);
41+
}
42+
43+
void m4() {
44+
thrd_t id;
45+
int *value = (int *)malloc(sizeof(int));
46+
47+
thrd_create(&id, t1, value); // COMPLIANT
48+
49+
thrd_join(id, NULL);
50+
51+
free(value);
52+
}
53+
54+
void m5() {
55+
thrd_t id;
56+
int *value = (int *)malloc(sizeof(int));
57+
58+
tss_set(k, value);
59+
60+
void *p = tss_get(k);
61+
62+
thrd_create(&id, t1, p); // COMPLIANT
63+
}
64+
65+
void m6(void *v) {
66+
int *value =
67+
tss_get(k); // COMPLIANT (AUDIT) - A non-threaded function without a
68+
// `tss_set` should not be considered suspicious.
69+
int a = *value + 1;
70+
}
71+
72+
void m7() {
73+
thrd_t id;
74+
int *value = (int *)malloc(sizeof(int));
75+
thrd_create(&id, t2,
76+
value); // COMPLIANT - note that t2 (which is now a threaded
77+
// function) is NON_COMPLIANT in an audit query.
78+
}

0 commit comments

Comments
 (0)