From bdeef5f98f030addb9a85336b10b2d108beb7f6e Mon Sep 17 00:00:00 2001 From: Sascha Wildner Date: Mon, 11 Jun 2012 10:59:11 +0200 Subject: [PATCH] test/cocci: Add a patch that checks for various sizeof() issues. It will warn about either assigning the size of a pointer to a variable or passing both and sizeof() to a function. These patterns almost always point to bugs. Taken-from: Linux --- test/cocci/noderef.cocci | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/cocci/noderef.cocci diff --git a/test/cocci/noderef.cocci b/test/cocci/noderef.cocci new file mode 100644 index 0000000000..c1707214e6 --- /dev/null +++ b/test/cocci/noderef.cocci @@ -0,0 +1,65 @@ +/// sizeof when applied to a pointer typed expression gives the size of +/// the pointer +/// +// Confidence: High +// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. +// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. +// URL: http://coccinelle.lip6.fr/ +// Comments: +// Options: -no_includes -include_headers + +virtual org +virtual report +virtual context +virtual patch + +@depends on patch@ +expression *x; +expression f; +type T; +@@ + +( +x = <+... sizeof( +- x ++ *x + ) ...+> +| +f(...,(T)(x),...,sizeof( +- x ++ *x + ),...) +| +f(...,sizeof(x),...,(T)( +- x ++ *x + ),...) +) + +@r depends on !patch@ +expression *x; +expression f; +position p; +type T; +@@ + +( +*x = <+... sizeof@p(x) ...+> +| +*f(...,(T)(x),...,sizeof@p(x),...) +| +*f(...,sizeof@p(x),...,(T)(x),...) +) + +@script:python depends on org@ +p << r.p; +@@ + +cocci.print_main("application of sizeof to pointer",p) + +@script:python depends on report@ +p << r.p; +@@ + +msg = "ERROR: application of sizeof to pointer" +coccilib.report.print_report(p[0],msg) -- 2.41.0