Merge branch 'for-3.9/upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.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 type T;
20 @@
21
22 (
23 x = <+... sizeof(
24 - x
25 + *x
26    ) ...+>
27 |
28 f(...,(T)(x),...,sizeof(
29 - x
30 + *x
31    ),...)
32 |
33 f(...,sizeof(x),...,(T)(
34 - x
35 + *x
36    ),...)
37 )
38
39 @r depends on !patch@
40 expression *x;
41 expression f;
42 position p;
43 type T;
44 @@
45
46 (
47 *x = <+... sizeof@p(x) ...+>
48 |
49 *f(...,(T)(x),...,sizeof@p(x),...)
50 |
51 *f(...,sizeof@p(x),...,(T)(x),...)
52 )
53
54 @script:python depends on org@
55 p << r.p;
56 @@
57
58 cocci.print_main("application of sizeof to pointer",p)
59
60 @script:python depends on report@
61 p << r.p;
62 @@
63
64 msg = "ERROR: application of sizeof to pointer"
65 coccilib.report.print_report(p[0],msg)