WIP FPC-III support
[linux/fpc-iii.git] / scripts / coccinelle / misc / badty.cocci
blobed3e0b8f3b1a03001984bf8b7650d5fadfd8380d
1 // SPDX-License-Identifier: GPL-2.0-only
2 /// Correct the size argument to alloc functions
3 ///
4 //# This makes an effort to find cases where the argument to sizeof is wrong
5 //# in memory allocation functions by checking the type of the allocated memory
6 //# when it is a double pointer and ensuring the sizeof argument takes a pointer
7 //# to the the memory being allocated. There are false positives in cases the
8 //# sizeof argument is not used in constructing the return value. The result
9 //# may need some reformatting.
11 // Confidence: Moderate
12 // Copyright: (C) 2014 Himangi Saraogi.
13 // Comments:
14 // Options:
16 virtual patch
17 virtual context
18 virtual org
19 virtual report
21 //----------------------------------------------------------
22 //  For context mode
23 //----------------------------------------------------------
25 @depends on context disable sizeof_type_expr@
26 type T;
27 T **x;
30   x =
31   <+...sizeof(
32 * T
33   )...+>
35 //----------------------------------------------------------
36 //  For patch mode
37 //----------------------------------------------------------
39 @depends on patch disable sizeof_type_expr@
40 type T;
41 T **x;
44   x =
45   <+...sizeof(
46 - T
47 + *x
48   )...+>
50 //----------------------------------------------------------
51 //  For org and report mode
52 //----------------------------------------------------------
54 @r depends on (org || report) disable sizeof_type_expr@
55 type T;
56 T **x;
57 position p;
60   x =
61   <+...sizeof(
62   T@p
63   )...+>
65 @script:python depends on org@
66 p << r.p;
69 coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type")
71 @script:python depends on report@
72 p << r.p;
75 msg="WARNING: Use correct pointer type argument for sizeof"
76 coccilib.report.print_report(p[0], msg)