diff options
Diffstat (limited to 'cgpt/cgpt_create.c')
-rw-r--r-- | cgpt/cgpt_create.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/cgpt/cgpt_create.c b/cgpt/cgpt_create.c index eab61225..dc25d8fa 100644 --- a/cgpt/cgpt_create.c +++ b/cgpt/cgpt_create.c @@ -42,7 +42,11 @@ int cgpt_create(CgptCreateParams *params) { h->alternate_lba = drive.gpt.drive_sectors - 1; h->first_usable_lba = 1 + 1 + GPT_ENTRIES_SECTORS; h->last_usable_lba = drive.gpt.drive_sectors - 1 - GPT_ENTRIES_SECTORS - 1; - uuid_generate((uint8_t *)&h->disk_uuid); + if (!uuid_generator) { + Error("Unable to generate new GUID. uuid_generator not set.\n"); + goto bad; + } + (*uuid_generator)((uint8_t *)&h->disk_uuid); h->entries_lba = 2; h->number_of_entries = 128; h->size_of_entry = sizeof(GptEntry); @@ -55,4 +59,9 @@ int cgpt_create(CgptCreateParams *params) { // Write it all out return DriveClose(&drive, 1); + +bad: + + DriveClose(&drive, 0); + return CGPT_FAILED; } |