From: Samuel Thibault Date: Sun, 29 Nov 2009 11:40:32 +0000 (+0100) Subject: 2009-11-29 Samuel Thibault X-Git-Tag: 1.98~344 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc9837ea5fcf60a0c613aad3da68912d1bd8ba5a;p=thirdparty%2Fgrub.git 2009-11-29 Samuel Thibault Fix GNU/Hurd grub-install crash. * util/grub-probe.c (probe): Try to access `path' only when it is not NULL. --- diff --git a/ChangeLog b/ChangeLog index a363e60ee..5dbdd6a9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-11-29 Samuel Thibault + + 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 Correct module naming. diff --git a/util/grub-probe.c b/util/grub-probe.c index b88fbaaae..2b9784123 100644 --- a/util/grub-probe.c +++ b/util/grub-probe.c @@ -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);