diff -ur grub2-1.96+20080429/kern/disk.c ../grub2-1.96+20080429/kern/disk.c --- grub2-1.96+20080429/kern/disk.c 2008-02-08 14:22:51.000000000 +0200 +++ ../grub2-1.96+20080429/kern/disk.c 2008-05-11 13:58:02.270673755 +0300 @@ -317,7 +317,10 @@ /* Reset the timer. */ grub_last_time = grub_get_rtc (); - grub_free (disk->partition); + if(disk->partition) { + grub_free (disk->partition->data); + grub_free (disk->partition); + } grub_free ((void *) disk->name); grub_free (disk); } diff -ur grub2-1.96+20080429/util/grub-probe.c ../grub2-1.96+20080429/util/grub-probe.c --- grub2-1.96+20080429/util/grub-probe.c 2008-05-11 13:59:14.934811935 +0300 +++ ../grub2-1.96+20080429/util/grub-probe.c 2008-05-11 13:46:21.729236855 +0300 @@ -190,9 +190,10 @@ struct stat st; grub_fs_t fs; - stat (path, &st); + if(path) + stat (path, &st); - if (st.st_mode == S_IFREG) + if (path && st.st_mode == S_IFREG) { /* Regular file. Verify that we can read it properly. */