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