diff --git a/common/utils/itti_analyzer/libparser/struct_type.c b/common/utils/itti_analyzer/libparser/struct_type.c
index 0b6bacd0077426487260d0735bed6e269d5fc36c..0cc35109471c45097a2f0401199a9dbd2034423c 100644
--- a/common/utils/itti_analyzer/libparser/struct_type.c
+++ b/common/utils/itti_analyzer/libparser/struct_type.c
@@ -9,6 +9,7 @@
 
 #include "struct_type.h"
 #include "buffers.h"
+#include "ui_callbacks.h"
 #include "ui_interface.h"
 
 int struct_dissect_from_buffer(
@@ -37,15 +38,15 @@ int struct_dissect_from_buffer(
 
     if ((strcmp (name, "IttiMsgText_s") == 0) &&
         (type->members_child[0] != NULL) && (strcmp (type->members_child[0]->name, "size") == 0) &&
-        (type->members_child[1] != NULL) && (strcmp (type->members_child[1]->name, "text") == 0))
-    {
+        (type->members_child[1] != NULL) && (strcmp (type->members_child[1]->name, "text") == 0)) {
         uint8_t *buf;
 
         length = buffer_get_uint32_t (buffer, offset + parent_offset);
         buf = malloc (length + 1);
         buf[0] = '\n';
         buffer_fetch_nbytes(buffer, parent_offset + offset + 32, length, &buf[1]);
-        ui_set_signal_text_cb(user_data, (gchar *) buf, length);
+        length = ui_callback_check_string ((char *) &buf[1], length, 0);
+        ui_set_signal_text_cb(user_data, (char *) buf, length + 1);
     }
     else
     {
diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.c b/common/utils/itti_analyzer/libui/ui_callbacks.c
index 72033c29201d4907f5c18443a8a0a23e4f21c8e5..22cccf515b312a1f1e5b56a459eeb46a6eb5fa87 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.c
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.c
@@ -160,6 +160,29 @@ gboolean ui_callback_on_about(GtkWidget *widget, gpointer data)
     return TRUE;
 }
 
+gint ui_callback_check_string (const char *string, const gint lenght, const guint message_number)
+{
+    gint real_length;
+
+    real_length = strnlen (string, lenght);
+    if (lenght != real_length)
+    {
+        if (message_number)
+        {
+            g_warning("Bad string format for message %u, '\\0' found before end of string (%d/%d)\n", message_number, real_length, lenght);
+        }
+        else
+        {
+            g_warning("Bad string format, '\\0' found before end of string (%d/%d)\n", real_length, lenght);
+        }
+        return (real_length);
+    }
+    else
+    {
+        return (lenght);
+    }
+}
+
 gboolean ui_callback_on_select_signal(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path,
                                       gboolean path_currently_selected, gpointer user_data)
 {
@@ -325,6 +348,7 @@ gboolean ui_callback_on_select_signal(GtkTreeSelection *selection, GtkTreeModel
                     message_header_type_size = get_message_header_type_size ();
                     data = (gchar *) buffer_at_offset ((buffer_t*) buffer, message_header_type_size);
                     data_size = get_message_size ((buffer_t*) buffer);
+                    data_size = ui_callback_check_string (data, data_size, message_number);
 
                     g_info("    dump message %d: header type size: %u, data size: %u, buffer %p, follow last %d",
                            message_number, message_header_type_size, data_size, buffer, ui_main_data.follow_last);
@@ -446,7 +470,7 @@ void ui_signal_add_to_list(gpointer data, gpointer user_data)
         message_header_type_size = get_message_header_type_size ();
         string_terminal = (gchar *) buffer_at_offset ((buffer_t*) signal_buffer, message_header_type_size);
         string_terminal_size = get_message_size ((buffer_t*) signal_buffer);
-
+        string_terminal_size = ui_callback_check_string (string_terminal, string_terminal_size, signal_buffer->message_number);
         ui_notebook_terminal_append_data(string_terminal, string_terminal_size);
     }
 
diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.h b/common/utils/itti_analyzer/libui/ui_callbacks.h
index bc6d006f56327f4ea78fd5fa37732880b0bacca0..052599f8b7fbeddee04f5e26a7325c065385f498 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.h
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.h
@@ -24,8 +24,9 @@ gboolean ui_callback_on_enable_filters(GtkWidget *widget,
 gboolean ui_callback_on_about(GtkWidget *widget,
                               gpointer   data);
 
-void ui_signal_add_to_list(gpointer data,
-                           gpointer user_data);
+gint ui_callback_check_string (const char *string,
+                               const gint lenght,
+                               const guint message_number);
 
 gboolean ui_callback_on_connect(GtkWidget *widget,
                                 gpointer   data);
@@ -43,6 +44,9 @@ gboolean ui_callback_on_select_signal(GtkTreeSelection *selection,
                                       gboolean          path_currently_selected,
                                       gpointer          userdata);
 
+void ui_signal_add_to_list(gpointer data,
+                           gpointer user_data);
+
 gboolean ui_callback_on_menu_enable (GtkWidget *widget, gpointer data);
 
 gboolean ui_callback_on_menu_color (GtkWidget *widget, gpointer data);
diff --git a/common/utils/itti_analyzer/libui/ui_notif_dlg.c b/common/utils/itti_analyzer/libui/ui_notif_dlg.c
index 272eb2a81f043fe2a24af6872899e63458ee492a..b0accd905d6c6965006e877dcfaac938c80217f5 100644
--- a/common/utils/itti_analyzer/libui/ui_notif_dlg.c
+++ b/common/utils/itti_analyzer/libui/ui_notif_dlg.c
@@ -21,7 +21,7 @@ int ui_notification_dialog(GtkMessageType type, gboolean cancel, const char *tit
 
     g_warning("%s", buffer);
 
-    dialogbox = gtk_message_dialog_new (GTK_WINDOW(ui_main_data.window), GTK_DIALOG_MODAL, type,
+    dialogbox = gtk_message_dialog_new (GTK_WINDOW(ui_main_data.window), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, type,
                                         cancel ? GTK_BUTTONS_OK_CANCEL : GTK_BUTTONS_OK, "%s",
                                         buffer);
     gtk_dialog_set_default_response (GTK_DIALOG(dialogbox), GTK_RESPONSE_OK);