Prevented appended partition from being marked twice in GPT if it is used as
El Torito boot image.
This commit is contained in:
parent
b5fb98a2a3
commit
5880636a50
@ -993,6 +993,24 @@ int iso_quick_apm_entry(struct iso_apm_partition_request **req_array,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int iso_find_gpt_entry(struct iso_gpt_partition_request **req_array,
|
||||||
|
int gpt_req_count,
|
||||||
|
uint64_t start_block, uint64_t block_count,
|
||||||
|
int *index, int flag)
|
||||||
|
{
|
||||||
|
struct iso_gpt_partition_request *entry;
|
||||||
|
|
||||||
|
for (*index = 0; *index < gpt_req_count; (*index)++) {
|
||||||
|
entry = req_array[*index];
|
||||||
|
if (entry->start_block == start_block &&
|
||||||
|
entry->block_count == block_count)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
*index = -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Convenience frontend for iso_register_gpt_entry().
|
/* Convenience frontend for iso_register_gpt_entry().
|
||||||
name has to be already encoded as UTF-16LE.
|
name has to be already encoded as UTF-16LE.
|
||||||
*/
|
*/
|
||||||
@ -2435,7 +2453,7 @@ int assess_appended_gpt(Ecma119Image *t, int flag)
|
|||||||
0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b
|
0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b
|
||||||
};
|
};
|
||||||
static uint8_t zero_uuid[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
static uint8_t zero_uuid[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
int i, ret, do_apm = 0, do_gpt = 0;
|
int i, ret, do_apm = 0, do_gpt = 0, index, already_in_gpt;
|
||||||
uint8_t gpt_name[72], *type_uuid;
|
uint8_t gpt_name[72], *type_uuid;
|
||||||
|
|
||||||
#ifndef Libisofs_appended_partitions_inlinE
|
#ifndef Libisofs_appended_partitions_inlinE
|
||||||
@ -2467,7 +2485,12 @@ int assess_appended_gpt(Ecma119Image *t, int flag)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (do_gpt) {
|
if (do_gpt)
|
||||||
|
already_in_gpt = iso_find_gpt_entry(t->gpt_req, t->gpt_req_count,
|
||||||
|
((uint64_t) t->appended_part_start[i]) * 4,
|
||||||
|
((uint64_t) t->appended_part_size[i]) * 4,
|
||||||
|
&index, 0);
|
||||||
|
if (do_gpt && !already_in_gpt) {
|
||||||
memset(gpt_name, 0, 72);
|
memset(gpt_name, 0, 72);
|
||||||
sprintf((char *) gpt_name, "Appended%d", i + 1);
|
sprintf((char *) gpt_name, "Appended%d", i + 1);
|
||||||
iso_ascii_utf_16le(gpt_name);
|
iso_ascii_utf_16le(gpt_name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user