]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-11-29 Samuel Thibault <samuel.thibault@ens-lyon.org>
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 29 Nov 2009 11:40:32 +0000 (12:40 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 29 Nov 2009 11:40:32 +0000 (12:40 +0100)
Fix GNU/Hurd grub-install crash.
* util/grub-probe.c (probe): Try to access `path' only when it is not
NULL.

ChangeLog
util/grub-probe.c

index a363e60ee60b75ca4e569ca791d4247ef5b920c5..5dbdd6a9c1cf3709fb3973ac8bc53e91d45a7df6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-11-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+       Fix GNU/Hurd grub-install crash.
+       * util/grub-probe.c (probe): Try to access `path' only when it is not
+       NULL.
+
 2009-11-28  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Correct module naming.
index b88fbaaaec109bba210f6586d1bc0879f68d1441..2b9784123732a4ccd11173157a45f343642830b9 100644 (file)
@@ -238,33 +238,36 @@ probe (const char *path, char *device_name)
 
   if (print == PRINT_FS)
     {
-      struct stat st;
+      if (path)
+        {
+         struct stat st;
 
-      stat (path, &st);
+         stat (path, &st);
 
-      if (S_ISREG (st.st_mode))
-       {
-         /* Regular file.  Verify that we can read it properly.  */
-
-         grub_file_t file;
-         char *rel_path;
-         grub_util_info ("reading %s via OS facilities", path);
-         filebuf_via_sys = grub_util_read_image (path);
-
-         rel_path = make_system_path_relative_to_its_root (path);
-         asprintf (&grub_path, "(%s)%s", drive_name, rel_path);
-         free (rel_path);
-         grub_util_info ("reading %s via GRUB facilities", grub_path);
-         file = grub_file_open (grub_path);
-         if (! file)
-           grub_util_error ("can not open %s via GRUB facilities", grub_path);
-         filebuf_via_grub = xmalloc (file->size);
-         grub_file_read (file, filebuf_via_grub, file->size);
-
-         grub_util_info ("comparing");
-
-         if (memcmp (filebuf_via_grub, filebuf_via_sys, file->size))
-           grub_util_error ("files differ");
+         if (S_ISREG (st.st_mode))
+           {
+             /* Regular file.  Verify that we can read it properly.  */
+
+             grub_file_t file;
+             char *rel_path;
+             grub_util_info ("reading %s via OS facilities", path);
+             filebuf_via_sys = grub_util_read_image (path);
+
+             rel_path = make_system_path_relative_to_its_root (path);
+             asprintf (&grub_path, "(%s)%s", drive_name, rel_path);
+             free (rel_path);
+             grub_util_info ("reading %s via GRUB facilities", grub_path);
+             file = grub_file_open (grub_path);
+             if (! file)
+               grub_util_error ("can not open %s via GRUB facilities", grub_path);
+             filebuf_via_grub = xmalloc (file->size);
+             grub_file_read (file, filebuf_via_grub, file->size);
+
+             grub_util_info ("comparing");
+
+             if (memcmp (filebuf_via_grub, filebuf_via_sys, file->size))
+               grub_util_error ("files differ");
+           }
        }
 
       printf ("%s\n", fs->name);