]> git.ipfire.org Git - thirdparty/kernel/stable.git/blob - scripts/coccinelle/misc/badty.cocci
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 505
[thirdparty/kernel/stable.git] / scripts / coccinelle / misc / badty.cocci
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.
10 //
11 // Confidence: Moderate
12 // Copyright: (C) 2014 Himangi Saraogi.
13 // Comments:
14 // Options:
15
16 virtual patch
17 virtual context
18 virtual org
19 virtual report
20
21 //----------------------------------------------------------
22 // For context mode
23 //----------------------------------------------------------
24
25 @depends on context disable sizeof_type_expr@
26 type T;
27 T **x;
28 @@
29
30 x =
31 <+...sizeof(
32 * T
33 )...+>
34
35 //----------------------------------------------------------
36 // For patch mode
37 //----------------------------------------------------------
38
39 @depends on patch disable sizeof_type_expr@
40 type T;
41 T **x;
42 @@
43
44 x =
45 <+...sizeof(
46 - T
47 + *x
48 )...+>
49
50 //----------------------------------------------------------
51 // For org and report mode
52 //----------------------------------------------------------
53
54 @r depends on (org || report) disable sizeof_type_expr@
55 type T;
56 T **x;
57 position p;
58 @@
59
60 x =
61 <+...sizeof(
62 T@p
63 )...+>
64
65 @script:python depends on org@
66 p << r.p;
67 @@
68
69 coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type")
70
71 @script:python depends on report@
72 p << r.p;
73 @@
74
75 msg="WARNING: Use correct pointer type argument for sizeof"
76 coccilib.report.print_report(p[0], msg)
77