From: Darren Kenny <darren.ke...@oracle.com> It is possible for the code to reach the end of the function without freeing the memory allocated to argv and argc still to be 0.
We should always call grub_free(argv). The grub_free() will handle a NULL argument correctly if it reaches that code without the memory being allocated. Fixes: CID 96672 Signed-off-by: Darren Kenny <darren.ke...@oracle.com> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com> --- grub-core/normal/completion.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/grub-core/normal/completion.c b/grub-core/normal/completion.c index c07100a8d..18cadfa85 100644 --- a/grub-core/normal/completion.c +++ b/grub-core/normal/completion.c @@ -401,8 +401,8 @@ char * grub_normal_do_completion (char *buf, int *restore, void (*hook) (const char *, grub_completion_type_t, int)) { - int argc; - char **argv; + int argc = 0; + char **argv = NULL; /* Initialize variables. */ match = 0; @@ -517,10 +517,8 @@ grub_normal_do_completion (char *buf, int *restore, fail: if (argc != 0) - { - grub_free (argv[0]); - grub_free (argv); - } + grub_free (argv[0]); + grub_free (argv); grub_free (match); grub_errno = GRUB_ERR_NONE; -- 2.11.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel