From 38dae1369c8ee0c8e51ded207a7d857cfcb3e230 Mon Sep 17 00:00:00 2001
From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr>
Date: Mon, 7 Mar 2016 11:20:45 +0100
Subject: [PATCH] [ADT RTL] Fixed a bug that caused memory blocks allocated via
 calloc appear as uninitialized data

---
 .../e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h     | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h b/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h
index 4ea61f32dd8..1294b4653ba 100644
--- a/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h
+++ b/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h
@@ -195,16 +195,19 @@ void* __realloc(void* ptr, size_t size) {
  * for further information, see calloc */
 void* __calloc(size_t nbr_block, size_t size_block) {
   void * tmp;
+  size_t size = nbr_block * size_block;
   struct _block * new_block;
-  if(nbr_block * size_block <= 0)
+  if(size <= 0)
     return NULL;
   tmp = native_calloc(nbr_block, size_block);
   if(tmp == NULL)
     return NULL;
-  new_block = __store_block(tmp, nbr_block * size_block);
+  new_block = __store_block(tmp, size);
   __heap_size += nbr_block * size_block;
   DASSERT(new_block != NULL && (void*)new_block->ptr != NULL);
+  /* Mark allocated block as freeable and initialized */
   new_block->freeable = true;
+  new_block->init_cpt = size;
   return (void*)new_block->ptr;
 }
 
-- 
GitLab