]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
bootp: fix memory leak in grub_cmd_dhcpopt
authorAndrei Borzenkov <arvidjaar@gmail.com>
Sat, 19 Mar 2016 06:39:30 +0000 (09:39 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Sat, 19 Mar 2016 06:39:30 +0000 (09:39 +0300)
grub-core/net/bootp.c

index a088244b4cb1ce9f21d02c1f3024a99e681ccb1a..09c6f7606aa13f5a680908b4f6cdaf7b2f5ce010 100644 (file)
@@ -368,6 +368,7 @@ grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)),
 
   if (grub_strcmp (args[3], "string") == 0)
     {
+      grub_err_t err = GRUB_ERR_NONE;
       char *val = grub_malloc (taglength + 1);
       if (!val)
        return grub_errno;
@@ -376,8 +377,9 @@ grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)),
       if (args[0][0] == '-' && args[0][1] == 0)
        grub_printf ("%s\n", val);
       else
-       return grub_env_set (args[0], val);
-      return GRUB_ERR_NONE;
+       err = grub_env_set (args[0], val);
+      grub_free (val);
+      return err;
     }
 
   if (grub_strcmp (args[3], "number") == 0)
@@ -399,6 +401,7 @@ grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)),
 
   if (grub_strcmp (args[3], "hex") == 0)
     {
+      grub_err_t err = GRUB_ERR_NONE;
       char *val = grub_malloc (2 * taglength + 1);
       int i;
       if (!val)
@@ -412,8 +415,9 @@ grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)),
       if (args[0][0] == '-' && args[0][1] == 0)
        grub_printf ("%s\n", val);
       else
-       return grub_env_set (args[0], val);
-      return GRUB_ERR_NONE;
+       err = grub_env_set (args[0], val);
+      grub_free (val);
+      return err;
     }
 
   return grub_error (GRUB_ERR_BAD_ARGUMENT,