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: a0e1ada63c0afdc2af3b9405cbf637d8bd28700c
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
* In our case it's at the end of the whole line. */
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;
for (iter = matches; *iter; iter++) {