xref: /linux/scripts/coccinelle/misc/noderef.cocci (revision c6fbb759)
1// SPDX-License-Identifier: GPL-2.0-only
2/// sizeof when applied to a pointer typed expression gives the size of
3/// the pointer
4///
5// Confidence: High
6// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.
7// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.
8// URL: https://coccinelle.gitlabpages.inria.fr/website
9// Comments:
10// Options: --no-includes --include-headers
11
12virtual org
13virtual report
14virtual context
15virtual patch
16
17@depends on patch@
18expression *x;
19expression f;
20expression i;
21type T;
22@@
23
24(
25x = <+... sizeof(
26- x
27+ *x
28   ) ...+>
29|
30f(...,(T)(x),...,sizeof(
31- x
32+ *x
33   ),...)
34|
35f(...,sizeof(
36- x
37+ *x
38   ),...,(T)(x),...)
39|
40f(...,(T)(x),...,i*sizeof(
41- x
42+ *x
43   ),...)
44|
45f(...,i*sizeof(
46- x
47+ *x
48   ),...,(T)(x),...)
49)
50
51@r depends on !patch@
52expression *x;
53expression f;
54expression i;
55position p;
56type T;
57@@
58
59(
60*x = <+... sizeof@p(x) ...+>
61|
62*f(...,(T)(x),...,sizeof@p(x),...)
63|
64*f(...,sizeof@p(x),...,(T)(x),...)
65|
66*f(...,(T)(x),...,i*sizeof@p(x),...)
67|
68*f(...,i*sizeof@p(x),...,(T)(x),...)
69)
70
71@script:python depends on org@
72p << r.p;
73@@
74
75cocci.print_main("application of sizeof to pointer",p)
76
77@script:python depends on report@
78p << r.p;
79@@
80
81msg = "ERROR: application of sizeof to pointer"
82coccilib.report.print_report(p[0],msg)
83