From 06e1d36f9583cada41ed455fa37434fbf070ed6d Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 13 Nov 2017 14:46:36 +0100 Subject: [PATCH] vshCommandParse: Don't leak @tkdata When parsing cmd line which has "--" on it, this is leaked. Problem is, parser->getNextArg() allocates new string and stores it into tkdata. But as soon as "--" is detected 'continue' is issued without any free of the allocated memory. ==5304== 3 bytes in 1 blocks are definitely lost in loss record 1 of 782 ==5304== at 0x4C2AF50: malloc (vg_replace_malloc.c:299) ==5304== by 0x8BB5AA9: strdup (strdup.c:42) ==5304== by 0x55842CA: virStrdup (virstring.c:941) ==5304== by 0x172B21: _vshStrdup (vsh.c:162) ==5304== by 0x175E8E: vshCommandArgvGetArg (vsh.c:1622) ==5304== by 0x17551D: vshCommandParse (vsh.c:1418) ==5304== by 0x175F25: vshCommandArgvParse (vsh.c:1638) ==5304== by 0x130940: virshParseArgv (virsh.c:820) ==5304== by 0x130C49: main (virsh.c:922) Signed-off-by: Michal Privoznik --- tools/vsh.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/vsh.c b/tools/vsh.c index a21e1d1dee..2366b7b719 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -1491,6 +1491,7 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) } } else if (tkdata[0] == '-' && tkdata[1] == '-' && tkdata[2] == '\0') { + VIR_FREE(tkdata); data_only = true; continue; } else {