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