mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
vsh: cmdComplete: Don't leak buffer for completion
The buffer which we assign to the 'rl_line_buffer' variable of readline
would be overwritten and thus leaked on multiple invocations of
cmdComplete in one session.
Free/clear it after it's used.
Hitting this leak was until recenly possible only in non-interactive
batch mode and recently also in interactive mode as 'complete' can be
used multiple times now interactively.
Fixes: a0e1ada63c
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
ac9c3c0b2c
commit
41400ac1dd
@ -3439,7 +3439,10 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
|
|||||||
* In our case it's at the end of the whole line. */
|
* In our case it's at the end of the whole line. */
|
||||||
rl_point = strlen(rl_line_buffer);
|
rl_point = strlen(rl_line_buffer);
|
||||||
|
|
||||||
if (!(matches = vshReadlineCompletion(arg, 0, 0)))
|
matches = vshReadlineCompletion(arg, 0, 0);
|
||||||
|
g_clear_pointer(&rl_line_buffer, g_free);
|
||||||
|
|
||||||
|
if (!matches)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (iter = matches; *iter; iter++) {
|
for (iter = matches; *iter; iter++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user