Merge tag 'audit-pr-20190702' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoor...
[linux-2.6-block.git] / scripts / coccinelle / misc / badty.cocci
CommitLineData
7f904d7e 1// SPDX-License-Identifier: GPL-2.0-only
7fcddf7c 2/// Correct the size argument to alloc functions
e52320c3
HS
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
7f904d7e 12// Copyright: (C) 2014 Himangi Saraogi.
e52320c3
HS
13// Comments:
14// Options:
15
16virtual patch
17virtual context
18virtual org
19virtual report
20
21//----------------------------------------------------------
22// For context mode
23//----------------------------------------------------------
24
25@depends on context disable sizeof_type_expr@
26type T;
27T **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@
40type T;
41T **x;
42@@
43
44 x =
45 <+...sizeof(
46- T
47+ *x
48 )...+>
49
50//----------------------------------------------------------
51// For org and report mode
52//----------------------------------------------------------
53
8f551bef 54@r depends on (org || report) disable sizeof_type_expr@
e52320c3
HS
55type T;
56T **x;
57position p;
58@@
59
60 x =
61 <+...sizeof(
62 T@p
63 )...+>
64
65@script:python depends on org@
66p << r.p;
67@@
68
69coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type")
70
71@script:python depends on report@
72p << r.p;
73@@
74
75msg="WARNING: Use correct pointer type argument for sizeof"
76coccilib.report.print_report(p[0], msg)
77