From 136d9f8283c3fc165fbf980ec36ce9136de81761 Mon Sep 17 00:00:00 2001 From: proski Date: Tue, 28 Apr 2009 13:14:20 +0000 Subject: [PATCH] 2009-04-27 Pavel Roskin * disk/fs_uuid.c (grub_fs_uuid_open): Allocate memory to copy parent's partition, don't copy it by reference, as it gets freed on close. --- ChangeLog | 6 ++++++ disk/fs_uuid.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ae7384364..e3d4b7005 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-04-28 Pavel Roskin + + * disk/fs_uuid.c (grub_fs_uuid_open): Allocate memory to copy + parent's partition, don't copy it by reference, as it gets freed + on close. + 2009-04-27 Vladimir Serbinenko Preboot hooks support diff --git a/disk/fs_uuid.c b/disk/fs_uuid.c index 9d83bb843..9636ce9d3 100644 --- a/disk/fs_uuid.c +++ b/disk/fs_uuid.c @@ -25,6 +25,7 @@ #include #include +#include static grub_device_t search_fs_uuid (const char *key, unsigned long *count) @@ -88,7 +89,16 @@ grub_fs_uuid_open (const char *name, grub_disk_t disk) disk->total_sectors = dev->disk->total_sectors; disk->has_partitions = 0; - disk->partition = dev->disk->partition; + if (dev->disk->partition) + { + disk->partition = grub_malloc (sizeof (*disk->partition)); + if (disk->partition) + grub_memcpy (disk->partition, dev->disk->partition, + sizeof (*disk->partition)); + } + else + disk->partition = NULL; + disk->data = dev->disk; return GRUB_ERR_NONE;