Эх сурвалжийг харах

Coccinelle: noderef: Add new rules and correct the old rule

Add new rules to detect the cases where sizeof is used in
function calls as a argument.

Also, for the patch mode third rule should behave same as
second rule with arguments reversed. So, change that as well.

Signed-off-by: Vaishali Thakkar <vaishali.thakkar@oracle.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Michal Marek <mmarek@suse.com>
Vaishali Thakkar 9 жил өмнө
parent
commit
bf56cc04ef

+ 17 - 1
scripts/coccinelle/misc/noderef.cocci

@@ -16,6 +16,7 @@ virtual patch
 @depends on patch@
 @depends on patch@
 expression *x;
 expression *x;
 expression f;
 expression f;
+expression i;
 type T;
 type T;
 @@
 @@
 
 
@@ -30,15 +31,26 @@ f(...,(T)(x),...,sizeof(
 + *x
 + *x
    ),...)
    ),...)
 |
 |
-f(...,sizeof(x),...,(T)(
+f(...,sizeof(
+- x
++ *x
+   ),...,(T)(x),...)
+|
+f(...,(T)(x),...,i*sizeof(
 - x
 - x
 + *x
 + *x
    ),...)
    ),...)
+|
+f(...,i*sizeof(
+- x
++ *x
+   ),...,(T)(x),...)
 )
 )
 
 
 @r depends on !patch@
 @r depends on !patch@
 expression *x;
 expression *x;
 expression f;
 expression f;
+expression i;
 position p;
 position p;
 type T;
 type T;
 @@
 @@
@@ -49,6 +61,10 @@ type T;
 *f(...,(T)(x),...,sizeof@p(x),...)
 *f(...,(T)(x),...,sizeof@p(x),...)
 |
 |
 *f(...,sizeof@p(x),...,(T)(x),...)
 *f(...,sizeof@p(x),...,(T)(x),...)
+|
+*f(...,(T)(x),...,i*sizeof@p(x),...)
+|
+*f(...,i*sizeof@p(x),...,(T)(x),...)
 )
 )
 
 
 @script:python depends on org@
 @script:python depends on org@