1
+ #include <stdint.h>
2
+
3
+ int main () {
4
+ /* Compliant declarations and assignments */
5
+ int integer1 = 1 ; // COMPLIANT: declaring integer as integer
6
+ int integer2 = integer1 ; // COMPLIANT: declaring integer as integer
7
+ integer1 =
8
+ integer2 ; // COMPLIANT: assigning integer rvalue to integer variable
9
+ int * int_pointer1 =
10
+ & integer1 ; // COMPLIANT: declaring pointer variable as an address
11
+ int * int_pointer2 = int_pointer1 ; // COMPLIANT: declaring pointer variable as
12
+ // an address rvalue
13
+ int_pointer1 =
14
+ int_pointer2 ; // COMPLIANT: assigning pointer rvalue to a pointer variable
15
+
16
+ /* Integer to pointer */
17
+ int * int_pointer3 = 0x01abcdef ; // NON_COMPLIANT: declaring pointer variable
18
+ // with raw hex integer
19
+ int_pointer3 =
20
+ 0x01abcdef ; // NON_COMPLIANT: assigning raw hex to pointer variable
21
+ int * int_pointer4 =
22
+ integer1 ; // NON_COMPLIANT: declaring pointer variable with integer value
23
+ * int_pointer4 =
24
+ integer1 +
25
+ 1 ; // NON_COMPLIANT: assigning integer rvalue to pointer variable
26
+ int * integer_address5 =
27
+ (int * )0x01abcdef ; // NON_COMPLIANT: casting raw hex to pointer type
28
+ int * integer_address6 =
29
+ (int * )integer1 ; // NON_COMPLIANT: casting integer value to pointer type
30
+
31
+ /* Pointer to integer */
32
+ int * integer_address7 =
33
+ & integer1 ; // COMPLIANT: declaring pointer variable as an address
34
+ int integer_address8 = & integer1 ; // NON_COMPLIANT: declaring integer
35
+ // variable with pointer type value
36
+ integer_address8 = & integer1 ; // NON_COMPLIANT: assigning pointer type rvalue
37
+ // to integer variable
38
+ int integer_address =
39
+ (int )& integer1 ; // NON_COMPLIANT: casting pointer value to integer type
40
+
41
+ /* Exceptions that are COMPLIANT */
42
+ int * null_pointer1 =
43
+ 0 ; // COMPLIANT: integer 0 converted to pointer becomes null pointer
44
+ int * null_pointer2 = (int * )0 ; // COMPLIANT: integer 0 is converted to pointer
45
+ // becomes null pointer
46
+ null_pointer2 =
47
+ 0 ; // COMPLIANT: integer 0 converted to pointer becomes null pointer
48
+
49
+ void * void_pointer = & integer1 ;
50
+ intptr_t void_pointer_integer1 =
51
+ void_pointer ; // COMPLIANT: void pointer can be converted to intptr_t
52
+ uintptr_t void_pointer_integer2 =
53
+ void_pointer ; // COMPLIANT: void pointer can be converted to uintptr_t
54
+ void * void_pointer1 = (void * )
55
+ void_pointer_integer1 ; // COMPLIANT: intptr_t can be converted to void*
56
+ void * void_pointer2 = (void * )
57
+ void_pointer_integer2 ; // COMPLIANT: uintptr_t can be converted to void*
58
+
59
+ return 0 ;
60
+ }
0 commit comments