aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxlu_cfg.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2010-08-04 16:00:13 +0100
committerIan Campbell <ian.campbell@citrix.com>2010-08-04 16:00:13 +0100
commit9107a9f825e949c1e8b5c366073a820e71e308c7 (patch)
tree9f0a88e459d2fd35add1d8a667460116b09082f9 /tools/libxl/libxlu_cfg.c
parentcf2be3f6e236be020c6830914b1ccd8fcc6df954 (diff)
downloadxen-9107a9f825e949c1e8b5c366073a820e71e308c7.tar.gz
xen-9107a9f825e949c1e8b5c366073a820e71e308c7.tar.bz2
xen-9107a9f825e949c1e8b5c366073a820e71e308c7.zip
libxl: free values in XLU_ConfigSetting.
Fixes these valgrind reported leaks, found with "valgrind xl create -n ..." ==21170== 8 bytes in 3 blocks are definitely lost in loss record 1 of 3 ==21170== at 0x4022F0A: malloc (vg_replace_malloc.c:236) ==21170== by 0x411B22F: strdup (in /lib/i686/cmov/libc-2.7.so) ==21170== by 0x4030085: xlu__cfgl_strdup (libxlu_cfg.c:290) ==21170== by 0x402F3C4: xlu__cfg_yylex (libxlu_cfg_l.l:37) ==21170== by 0x402DD86: xlu__cfg_yyparse (libxlu_cfg_y.c:1338) ==21170== by 0x40308AE: xlu_cfg_readdata (libxlu_cfg.c:85) ==21170== by 0x804DBE4: parse_config_data (xl_cmdimpl.c:591) ==21170== by 0x8056EE4: create_domain (xl_cmdimpl.c:1381) ==21170== by 0x80582AE: main_create (xl_cmdimpl.c:3178) ==21170== by 0x804B54B: main (xl.c:76) ==21170== ==21170== 57 bytes in 2 blocks are definitely lost in loss record 2 of 3 ==21170== at 0x4022F0A: malloc (vg_replace_malloc.c:236) ==21170== by 0x402FE22: xlu__cfgl_dequote (libxlu_cfg.c:307) ==21170== by 0x402F4B4: xlu__cfg_yylex (libxlu_cfg_l.l:52) ==21170== by 0x402DD86: xlu__cfg_yyparse (libxlu_cfg_y.c:1338) ==21170== by 0x40308AE: xlu_cfg_readdata (libxlu_cfg.c:85) ==21170== by 0x804DBE4: parse_config_data (xl_cmdimpl.c:591) ==21170== by 0x8056EE4: create_domain (xl_cmdimpl.c:1381) ==21170== by 0x80582AE: main_create (xl_cmdimpl.c:3178) ==21170== by 0x804B54B: main (xl.c:76) ==21170== ==21170== 111 bytes in 6 blocks are definitely lost in loss record 3 of 3 ==21170== at 0x4022F0A: malloc (vg_replace_malloc.c:236) ==21170== by 0x402FE22: xlu__cfgl_dequote (libxlu_cfg.c:307) ==21170== by 0x402F4ED: xlu__cfg_yylex (libxlu_cfg_l.l:56) ==21170== by 0x402DD86: xlu__cfg_yyparse (libxlu_cfg_y.c:1338) ==21170== by 0x40308AE: xlu_cfg_readdata (libxlu_cfg.c:85) ==21170== by 0x804DBE4: parse_config_data (xl_cmdimpl.c:591) ==21170== by 0x8056EE4: create_domain (xl_cmdimpl.c:1381) ==21170== by 0x80582AE: main_create (xl_cmdimpl.c:3178) ==21170== by 0x804B54B: main (xl.c:76) Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxlu_cfg.c')
-rw-r--r--tools/libxl/libxlu_cfg.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/tools/libxl/libxlu_cfg.c b/tools/libxl/libxlu_cfg.c
index 69a6b24b2d..09a7c71eda 100644
--- a/tools/libxl/libxlu_cfg.c
+++ b/tools/libxl/libxlu_cfg.c
@@ -91,7 +91,11 @@ int xlu_cfg_readdata(XLU_Config *cfg, const char *data, int length) {
}
void xlu__cfg_set_free(XLU_ConfigSetting *set) {
+ int i;
+
free(set->name);
+ for (i=0; i<set->nvalues; i++)
+ free(set->values[i]);
free(set->values);
free(set);
}