diff --git a/common/utils/itti/intertask_interface_dump.c b/common/utils/itti/intertask_interface_dump.c
index 38b51bfad3ab9f5a6ea74e53f4156d64519d2d0c..b81c83646a14a9ef73c417fb68842eb6f64f3060 100644
--- a/common/utils/itti/intertask_interface_dump.c
+++ b/common/utils/itti/intertask_interface_dump.c
@@ -684,7 +684,10 @@ void itti_dump_user_data_delete_function(void *user_data, void *user_state)
         itti_dump_queue_item_t *item;
 
         item = (itti_dump_queue_item_t *)user_data;
-        free(item->data);
+        if (item->data != NULL)
+        {
+            free(item->data);
+        }
         free(item);
     }
 }
@@ -692,10 +695,12 @@ void itti_dump_user_data_delete_function(void *user_data, void *user_state)
 void itti_dump_exit(void)
 {
     void *arg;
-    itti_dump_queue_item_t new;
+    itti_dump_queue_item_t *new;
+
+    new = calloc(1, sizeof(itti_dump_queue_item_t));
 
     /* Send the exit signal to other thread */
-    itti_dump_enqueue_message(&new, 0, ITTI_DUMP_EXIT_SIGNAL);
+    itti_dump_enqueue_message(new, 0, ITTI_DUMP_EXIT_SIGNAL);
 
     ITTI_DUMP_DEBUG("waiting for dumper thread to finish\n");