12cbd0825SJulia Lawall/// sizeof when applied to a pointer typed expression gives the size of 22cbd0825SJulia Lawall/// the pointer 32cbd0825SJulia Lawall/// 42cbd0825SJulia Lawall// Confidence: High 52cbd0825SJulia Lawall// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. 62cbd0825SJulia Lawall// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. 72cbd0825SJulia Lawall// URL: http://coccinelle.lip6.fr/ 82cbd0825SJulia Lawall// Comments: 993f14468SNicolas Palix// Options: --no-includes --include-headers 102cbd0825SJulia Lawall 112cbd0825SJulia Lawallvirtual org 122cbd0825SJulia Lawallvirtual report 132cbd0825SJulia Lawallvirtual context 142cbd0825SJulia Lawallvirtual patch 152cbd0825SJulia Lawall 162cbd0825SJulia Lawall@depends on patch@ 172cbd0825SJulia Lawallexpression *x; 182cbd0825SJulia Lawallexpression f; 19*bf56cc04SVaishali Thakkarexpression i; 202cbd0825SJulia Lawalltype T; 212cbd0825SJulia Lawall@@ 222cbd0825SJulia Lawall 232cbd0825SJulia Lawall( 242cbd0825SJulia Lawallx = <+... sizeof( 252cbd0825SJulia Lawall- x 262cbd0825SJulia Lawall+ *x 272cbd0825SJulia Lawall ) ...+> 282cbd0825SJulia Lawall| 292cbd0825SJulia Lawallf(...,(T)(x),...,sizeof( 302cbd0825SJulia Lawall- x 312cbd0825SJulia Lawall+ *x 322cbd0825SJulia Lawall ),...) 332cbd0825SJulia Lawall| 34*bf56cc04SVaishali Thakkarf(...,sizeof( 35*bf56cc04SVaishali Thakkar- x 36*bf56cc04SVaishali Thakkar+ *x 37*bf56cc04SVaishali Thakkar ),...,(T)(x),...) 38*bf56cc04SVaishali Thakkar| 39*bf56cc04SVaishali Thakkarf(...,(T)(x),...,i*sizeof( 402cbd0825SJulia Lawall- x 412cbd0825SJulia Lawall+ *x 422cbd0825SJulia Lawall ),...) 43*bf56cc04SVaishali Thakkar| 44*bf56cc04SVaishali Thakkarf(...,i*sizeof( 45*bf56cc04SVaishali Thakkar- x 46*bf56cc04SVaishali Thakkar+ *x 47*bf56cc04SVaishali Thakkar ),...,(T)(x),...) 482cbd0825SJulia Lawall) 492cbd0825SJulia Lawall 502cbd0825SJulia Lawall@r depends on !patch@ 512cbd0825SJulia Lawallexpression *x; 522cbd0825SJulia Lawallexpression f; 53*bf56cc04SVaishali Thakkarexpression i; 542cbd0825SJulia Lawallposition p; 552cbd0825SJulia Lawalltype T; 562cbd0825SJulia Lawall@@ 572cbd0825SJulia Lawall 582cbd0825SJulia Lawall( 592cbd0825SJulia Lawall*x = <+... sizeof@p(x) ...+> 602cbd0825SJulia Lawall| 612cbd0825SJulia Lawall*f(...,(T)(x),...,sizeof@p(x),...) 622cbd0825SJulia Lawall| 632cbd0825SJulia Lawall*f(...,sizeof@p(x),...,(T)(x),...) 64*bf56cc04SVaishali Thakkar| 65*bf56cc04SVaishali Thakkar*f(...,(T)(x),...,i*sizeof@p(x),...) 66*bf56cc04SVaishali Thakkar| 67*bf56cc04SVaishali Thakkar*f(...,i*sizeof@p(x),...,(T)(x),...) 682cbd0825SJulia Lawall) 692cbd0825SJulia Lawall 702cbd0825SJulia Lawall@script:python depends on org@ 712cbd0825SJulia Lawallp << r.p; 722cbd0825SJulia Lawall@@ 732cbd0825SJulia Lawall 742cbd0825SJulia Lawallcocci.print_main("application of sizeof to pointer",p) 752cbd0825SJulia Lawall 762cbd0825SJulia Lawall@script:python depends on report@ 772cbd0825SJulia Lawallp << r.p; 782cbd0825SJulia Lawall@@ 792cbd0825SJulia Lawall 802cbd0825SJulia Lawallmsg = "ERROR: application of sizeof to pointer" 812cbd0825SJulia Lawallcoccilib.report.print_report(p[0],msg) 82