xref: /openbmc/linux/scripts/coccinelle/misc/noderef.cocci (revision 2cbd08253a011bd9db9a51f15a974df3a779224b)
1*2cbd0825SJulia Lawall/// sizeof when applied to a pointer typed expression gives the size of
2*2cbd0825SJulia Lawall/// the pointer
3*2cbd0825SJulia Lawall///
4*2cbd0825SJulia Lawall// Confidence: High
5*2cbd0825SJulia Lawall// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2.
6*2cbd0825SJulia Lawall// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2.
7*2cbd0825SJulia Lawall// URL: http://coccinelle.lip6.fr/
8*2cbd0825SJulia Lawall// Comments:
9*2cbd0825SJulia Lawall// Options: -no_includes -include_headers
10*2cbd0825SJulia Lawall
11*2cbd0825SJulia Lawallvirtual org
12*2cbd0825SJulia Lawallvirtual report
13*2cbd0825SJulia Lawallvirtual context
14*2cbd0825SJulia Lawallvirtual patch
15*2cbd0825SJulia Lawall
16*2cbd0825SJulia Lawall@depends on patch@
17*2cbd0825SJulia Lawallexpression *x;
18*2cbd0825SJulia Lawallexpression f;
19*2cbd0825SJulia Lawalltype T;
20*2cbd0825SJulia Lawall@@
21*2cbd0825SJulia Lawall
22*2cbd0825SJulia Lawall(
23*2cbd0825SJulia Lawallx = <+... sizeof(
24*2cbd0825SJulia Lawall- x
25*2cbd0825SJulia Lawall+ *x
26*2cbd0825SJulia Lawall   ) ...+>
27*2cbd0825SJulia Lawall|
28*2cbd0825SJulia Lawallf(...,(T)(x),...,sizeof(
29*2cbd0825SJulia Lawall- x
30*2cbd0825SJulia Lawall+ *x
31*2cbd0825SJulia Lawall   ),...)
32*2cbd0825SJulia Lawall|
33*2cbd0825SJulia Lawallf(...,sizeof(x),...,(T)(
34*2cbd0825SJulia Lawall- x
35*2cbd0825SJulia Lawall+ *x
36*2cbd0825SJulia Lawall   ),...)
37*2cbd0825SJulia Lawall)
38*2cbd0825SJulia Lawall
39*2cbd0825SJulia Lawall@r depends on !patch@
40*2cbd0825SJulia Lawallexpression *x;
41*2cbd0825SJulia Lawallexpression f;
42*2cbd0825SJulia Lawallposition p;
43*2cbd0825SJulia Lawalltype T;
44*2cbd0825SJulia Lawall@@
45*2cbd0825SJulia Lawall
46*2cbd0825SJulia Lawall(
47*2cbd0825SJulia Lawall*x = <+... sizeof@p(x) ...+>
48*2cbd0825SJulia Lawall|
49*2cbd0825SJulia Lawall*f(...,(T)(x),...,sizeof@p(x),...)
50*2cbd0825SJulia Lawall|
51*2cbd0825SJulia Lawall*f(...,sizeof@p(x),...,(T)(x),...)
52*2cbd0825SJulia Lawall)
53*2cbd0825SJulia Lawall
54*2cbd0825SJulia Lawall@script:python depends on org@
55*2cbd0825SJulia Lawallp << r.p;
56*2cbd0825SJulia Lawall@@
57*2cbd0825SJulia Lawall
58*2cbd0825SJulia Lawallcocci.print_main("application of sizeof to pointer",p)
59*2cbd0825SJulia Lawall
60*2cbd0825SJulia Lawall@script:python depends on report@
61*2cbd0825SJulia Lawallp << r.p;
62*2cbd0825SJulia Lawall@@
63*2cbd0825SJulia Lawall
64*2cbd0825SJulia Lawallmsg = "ERROR: application of sizeof to pointer"
65*2cbd0825SJulia Lawallcoccilib.report.print_report(p[0],msg)
66