Correctly mark the last El Torito section header.

Reported by:	Thomas Schmitt <scdbackup@gmx.net>
Reviewed by:	emaste, imp
MFC after:	1 week
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D14812
This commit is contained in:
benno 2018-03-23 22:52:26 +00:00
parent 6746bdeb71
commit 781dab6575

View File

@ -294,7 +294,10 @@ cd9660_boot_setup_section_head(char platform)
return NULL;
sh = &entry->entry_data.SH;
/* More by default. The last one will manually be set to 0x91 */
/*
* More by default.
* The last one will manually be set to ET_SECTION_HEADER_LAST
*/
sh->header_indicator[0] = ET_SECTION_HEADER_MORE;
sh->platform_id[0] = platform;
sh->num_section_entries[0] = 0;
@ -464,6 +467,13 @@ cd9660_setup_boot(iso9660_disk *diskStructure, int first_sector)
tmp_disk = TAILQ_NEXT(tmp_disk, image_list);
}
/* Find the last Section Header entry and mark it as the last. */
LIST_FOREACH(next, &diskStructure->boot_entries, ll_struct) {
if (next->entry_type == ET_ENTRY_SH)
head = next;
}
head->entry_data.SH.header_indicator[0] = ET_SECTION_HEADER_LAST;
/* TODO: Remaining boot disks when implemented */
return first_sector + used_sectors;