summaryrefslogtreecommitdiff
path: root/cgpt/cgpt_create.c
diff options
context:
space:
mode:
Diffstat (limited to 'cgpt/cgpt_create.c')
-rw-r--r--cgpt/cgpt_create.c11
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;
}