diff --git a/dev/coccinelle/unchecked-strdup.cocci b/dev/coccinelle/unchecked-strdup.cocci new file mode 100644 index 000000000..fa109aaf1 --- /dev/null +++ b/dev/coccinelle/unchecked-strdup.cocci @@ -0,0 +1,34 @@ +// find calls to strdup +@call@ +expression ptr; +position p; +@@ + +ptr@p = strdup(...); + +// find ok calls to strdup +@ok@ +expression ptr; +position call.p; +@@ + +ptr@p = strdup(...); +... when != ptr +( + (ptr == NULL || ...) +| + (ptr == 0 || ...) +| + (ptr != NULL || ...) +| + (ptr != 0 || ...) +) + +// fix bad calls to strdup +@depends on !ok@ +expression ptr; +position call.p; +@@ + +ptr@p = strdup(...); ++ if (ptr == NULL) return;