]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/normal/main.c: Fix freed memory dereference.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 4 May 2013 11:50:16 +0000 (13:50 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 4 May 2013 11:50:16 +0000 (13:50 +0200)
ChangeLog
grub-core/normal/main.c

index 47f06fdc08f1e88e06dbc464de5b7265d4c13f09..16456f0325d3eaa44f32f8d2d2caa00b5c741f0f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-04  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/normal/main.c: Fix freed memory dereference.
+
 2013-05-04  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Fix several memory leaks.
index f7a815fa1b4f38b89b92bf6c0268dccb9e4b6c65..ffc2cd221880e566a35fd616195b993cbba956ea 100644 (file)
@@ -163,8 +163,9 @@ static grub_menu_t
 read_config_file (const char *config)
 {
   grub_file_t file;
-  const char *old_file, *old_dir;
+  char *old_file = 0, *old_dir = 0;
   char *config_dir, *ptr = 0;
+  const char *ctmp;
 
   grub_menu_t newmenu;
 
@@ -183,8 +184,12 @@ read_config_file (const char *config)
   if (! file)
     return 0;
 
-  old_file = grub_env_get ("config_file");
-  old_dir = grub_env_get ("config_directory");
+  ctmp = grub_env_get ("config_file");
+  if (ctmp)
+    old_file = grub_strdup (ctmp);
+  ctmp = grub_env_get ("config_directory");
+  if (ctmp)
+    old_dir = grub_strdup (ctmp);
   grub_env_set ("config_file", config);
   config_dir = grub_strdup (config);
   if (config_dir)
@@ -220,6 +225,8 @@ read_config_file (const char *config)
     grub_env_set ("config_directory", old_dir);
   else
     grub_env_unset ("config_directory");
+  grub_free (old_file);
+  grub_free (old_dir);
 
   grub_file_close (file);