diff options
Diffstat (limited to 'framework/src/suricata/qa/coccinelle/malloc-error-check.cocci')
-rw-r--r-- | framework/src/suricata/qa/coccinelle/malloc-error-check.cocci | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/framework/src/suricata/qa/coccinelle/malloc-error-check.cocci b/framework/src/suricata/qa/coccinelle/malloc-error-check.cocci new file mode 100644 index 00000000..b245189a --- /dev/null +++ b/framework/src/suricata/qa/coccinelle/malloc-error-check.cocci @@ -0,0 +1,63 @@ +@malloced@ +expression x; +position p1; +identifier func =~ "(SCMalloc|SCStrdup|SCCalloc|SCMallocAligned|SCRealloc)"; +@@ + +x@p1 = func(...) + +@inlinetested@ +expression x, E; +statement S; +position malloced.p1; +identifier func =~ "(SCMalloc|SCStrdup|SCCalloc|SCMallocAligned|SCRealloc)"; +@@ + +( +if ((x@p1 = func(...)) == NULL) S +| +if (E && (x@p1 = func(...)) == NULL) S +) + +@realloc exists@ +position malloced.p1; +expression x, E1; +identifier func =~ "(SCMalloc|SCCalloc|SCMallocAligned)"; +@@ + +x@p1 = func(...) +... when != x +x = SCRealloc(x, E1) + +@istested depends on !realloc exists@ +expression x, E1; +position malloced.p1; +statement S1, S2; +identifier func =~ "(SCMalloc|SCStrdup|SCCalloc|SCMallocAligned|SCRealloc)"; +@@ + +x@p1 = func(...) +... when != x +( +if (unlikely(x == NULL)) S1 +| +if (unlikely(x == NULL)) S1 else S2 +| +if (likely(x != NULL)) S1 +| +if (x == NULL) S1 +| +if (x != NULL) S1 else S2 +| +if (x && E1) S1 +| +BUG_ON(x == NULL) +) + + +@script:python depends on !realloc && !istested && !inlinetested@ +p1 << malloced.p1; +@@ +print "Structure malloced at %s:%s but error is not checked." % (p1[0].file, p1[0].line) +import sys +sys.exit(1) |