1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
From 1722b1b196acb0d8d30f08a4677791f2f66f605f Mon Sep 17 00:00:00 2001
From: Thibault Guittet <guittet.thibault[at]gmail.com>
Date: Wed, 13 May 2015 17:37:51 +0200
Subject: [PATCH 1/2] Address Sanitizer detected a memory leak in main_items
---
configure.ac | 8 ++++++++
renderers.c | 12 ++++++++++++
run-me.sh | 2 +-
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index fa521e7..7e3307f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,6 +41,14 @@ AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug],
fi
])
+AC_ARG_ENABLE(asan, AC_HELP_STRING([--enable-asan],
+ [enable Address Sanitizer]), [
+ if (test "${enableval}" = "yes" &&
+ test "${ac_cv_prog_cc_g}" = "yes"); then
+ CFLAGS="$CFLAGS -g -fsanitize=address -fno-omit-frame-pointer"
+ fi
+])
+
AC_CONFIG_HEADERS([config.h:config.h.in])
PKG_CHECK_MODULES(JSON, [json-c],,
diff --git a/renderers.c b/renderers.c
index 14e4783..7793008 100644
--- a/renderers.c
+++ b/renderers.c
@@ -763,6 +763,7 @@ void __renderers_free_services(void)
{
int i;
struct userptr_data *data;
+ const char *item_name_desc = NULL;
if (main_menu == NULL)
return;
@@ -774,6 +775,17 @@ void __renderers_free_services(void)
free((void *) data->dbus_name);
free((void *) data->pretty_name);
free(data);
+
+ item_name_desc = item_name(main_items[i]);
+
+ if (item_name_desc != NULL)
+ free((void *) item_name_desc);
+
+ item_name_desc = item_description(main_items[i]);
+
+ if (item_name_desc != NULL)
+ free((void *) item_name_desc);
+
free_item(main_items[i]);
}
diff --git a/run-me.sh b/run-me.sh
index 65b3f14..c4281d1 100755
--- a/run-me.sh
+++ b/run-me.sh
@@ -2,6 +2,6 @@
autoreconf -i -f
-./configure --disable-optimization --enable-debug #--disable-silent-rules
+./configure --disable-optimization --enable-debug #--enable-asan --disable-silent-rules
make -B
From f9243375fc19feeb76f7f3ca108e23d5c2106a09 Mon Sep 17 00:00:00 2001
From: Thibault Guittet <alan-mushi@users.noreply.github.com>
Date: Thu, 14 May 2015 13:09:23 +0200
Subject: [PATCH 2/2] Wrong keyword
Not detected previously because FIELD and ITEM have the same size.
---
renderers.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/renderers.c b/renderers.c
index 7793008..c531a1e 100644
--- a/renderers.c
+++ b/renderers.c
@@ -507,7 +507,7 @@ static void renderers_service_config(struct json_object *serv_array)
json_object_array_get_idx(serv_array, 0));
longest_key_len = 25 + 4; // len("Nameservers.Configuration") + padding
- main_fields = malloc(sizeof(ITEM *) * max_nb_fields); // 113 = #fields + #labels + 1
+ main_fields = malloc(sizeof(FIELD *) * max_nb_fields); // 113 = #fields + #labels + 1
i = 0;
str_field[0] = '\0';
|