summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas.abraitis@gmail.com>2021-10-07 16:20:35 +0300
committerDonatas Abraitis <donatas.abraitis@gmail.com>2021-10-07 16:25:03 +0300
commitc08050d6d10a5acab3d044858b5480bb01351cff (patch)
tree87fa79fe2bee4d7795443ab435ac3e87aa9b0665
parentb7a88ee2910a1c76ccbae38a9e7226d6c93fff37 (diff)
tools: Catch double pointer of struct thread towards thread_add_*
``` % spatch --sp-file tools/coccinelle/struct_thread_double_pointer.cocci --macro-file tools/cocci.h ./ 2>/dev/null ./lib/northbound_confd.c:429:65-66: Passed double 'struct thread' pointer ./lib/northbound_confd.c:1174:61-62: Passed double 'struct thread' pointer ./lib/northbound_sysrepo.c:543:69-70: Passed double 'struct thread' pointer ``` Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
-rw-r--r--tools/coccinelle/struct_thread_double_pointer.cocci35
1 files changed, 35 insertions, 0 deletions
diff --git a/tools/coccinelle/struct_thread_double_pointer.cocci b/tools/coccinelle/struct_thread_double_pointer.cocci
new file mode 100644
index 0000000000..a08e6727cf
--- /dev/null
+++ b/tools/coccinelle/struct_thread_double_pointer.cocci
@@ -0,0 +1,35 @@
+@r1@
+identifier fn, m, f, a, v, t;
+identifier func =~ "thread_add_";
+type T1, T2;
+position p;
+@@
+
+?static
+T1 fn(T2 *t)
+{
+...
+func(m,f,a,v,&t)@p
+...
+}
+
+@r2@
+identifier m, f, a, v, t;
+identifier func =~ "thread_add_";
+type T1;
+position p;
+@@
+
+T1 *t;
+...
+func(m,f,a,v,&t)@p
+
+@script:python@
+p << r1.p;
+@@
+coccilib.report.print_report(p[0],"Passed double 'struct thread' pointer")
+
+@script:python@
+p << r2.p;
+@@
+coccilib.report.print_report(p[0],"Passed double 'struct thread' pointer")