From fe9483184f9c03094353796afcad9c1d351df49d Mon Sep 17 00:00:00 2001
From: Andres Amaya Garcia <Andres.AmayaGarcia@arm.com>
Date: Thu, 6 Jul 2017 10:34:12 +0100
Subject: [PATCH] Remove malloc references in mbedtls/scripts

---
 scripts/find-mem-leak.cocci  |  8 ++---
 scripts/malloc-init.pl       | 70 ------------------------------------
 scripts/rm-calloc-cast.cocci |  7 ++++
 scripts/rm-malloc-cast.cocci |  7 ----
 4 files changed, 11 insertions(+), 81 deletions(-)
 delete mode 100755 scripts/malloc-init.pl
 create mode 100644 scripts/rm-calloc-cast.cocci
 delete mode 100644 scripts/rm-malloc-cast.cocci

diff --git a/scripts/find-mem-leak.cocci b/scripts/find-mem-leak.cocci
index 5cfe4522d..8179e2b3e 100644
--- a/scripts/find-mem-leak.cocci
+++ b/scripts/find-mem-leak.cocci
@@ -2,8 +2,8 @@
 expression x, y;
 statement S;
 @@
-  x = mbedtls_malloc(...);
-  y = mbedtls_malloc(...);
+  x = mbedtls_calloc(...);
+  y = mbedtls_calloc(...);
   ...
 * if (x == NULL || y == NULL)
     S
@@ -13,8 +13,8 @@ expression x, y;
 statement S;
 @@
   if (
-*   (x = mbedtls_malloc(...)) == NULL
+*   (x = mbedtls_calloc(...)) == NULL
     ||
-*   (y = mbedtls_malloc(...)) == NULL
+*   (y = mbedtls_calloc(...)) == NULL
   )
     S
diff --git a/scripts/malloc-init.pl b/scripts/malloc-init.pl
deleted file mode 100755
index b7d6fcfac..000000000
--- a/scripts/malloc-init.pl
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/perl
-
-# Check for malloc calls not shortly followed by initialisation.
-#
-# Known limitations:
-# - false negative: can't see allocations spanning more than one line
-# - possible false negatives, see patterns
-# - false positive: malloc-malloc-init-init is not accepted
-# - false positives: "non-standard" init functions (eg, the things being
-# initialised is not the first arg, or initialise struct members)
-#
-# Since false positives are expected, the results must be manually reviewed.
-#
-# Typical usage: scripts/malloc-init.pl library/*.c
-
-use warnings;
-use strict;
-
-use utf8;
-use open qw(:std utf8);
-
-my $limit = 7;
-my $inits = qr/memset|memcpy|_init|fread|base64_..code/;
-
-# cases to bear in mind:
-#
-# 0. foo = malloc(...); memset( foo, ... );
-# 1. *foo = malloc(...); memset( *foo, ... );
-# 2. type *foo = malloc(...); memset( foo, ...);
-# 3. foo = malloc(...); foo_init( (type *) foo );
-# 4. foo = malloc(...); for(i=0..n) { init( &foo[i] ); }
-#
-# The chosen patterns are a bit relaxed, but unlikely to cause false positives
-# in real code (initialising *foo or &foo instead of foo will likely be caught
-# by functional tests).
-#
-my $id = qr/([a-zA-Z-0-9_\->\.]*)/;
-my $prefix = qr/\s(?:\*?|\&?|\([a-z_]* \*\))\s*/;
-
-my $name;
-my $line;
-my @bad;
-
-die "Usage: $0 file.c [...]\n" unless @ARGV;
-
-while (my $file = shift @ARGV)
-{
-    open my $fh, "<", $file or die "read $file failed: $!\n";
-    while (<$fh>)
-    {
-        if( /mbedtls_malloc\(/ ) {
-            if( /$id\s*=.*mbedtls_malloc\(/ ) {
-                push @bad, "$file:$line:$name" if $name;
-                $name = $1;
-                $line = $.;
-            } else {
-                push @bad, "$file:$.:???" unless /return mbedtls_malloc/;
-            }
-        } elsif( $name && /(?:$inits)\($prefix\Q$name\E\b/ ) {
-            undef $name;
-        } elsif( $name && $. - $line > $limit ) {
-            push @bad, "$file:$line:$name";
-            undef $name;
-            undef $line;
-        }
-    }
-    close $fh or die;
-}
-
-print "$_\n" for @bad;
diff --git a/scripts/rm-calloc-cast.cocci b/scripts/rm-calloc-cast.cocci
new file mode 100644
index 000000000..89481c01a
--- /dev/null
+++ b/scripts/rm-calloc-cast.cocci
@@ -0,0 +1,7 @@
+@rm_calloc_cast@
+expression x, n, m;
+type T;
+@@
+  x =
+- (T *)
+  mbedtls_calloc(n, m)
diff --git a/scripts/rm-malloc-cast.cocci b/scripts/rm-malloc-cast.cocci
deleted file mode 100644
index 9337dc501..000000000
--- a/scripts/rm-malloc-cast.cocci
+++ /dev/null
@@ -1,7 +0,0 @@
-@rm_malloc_cast@
-expression x, n;
-type T;
-@@
-  x =
-- (T *)
-  mbedtls_malloc(n)