Fix NetBSD PR bin/44114:
makefs with -t cd9660 -o rockridge against directories with deep structure creates a corrupted cd9660 image. http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=44114 Fix NetBSD PR bin/45217: makefs creates ISO9660 images that violate the ECMA-119 (ISO9660) specification. This is caused by erroneously writing 32 bytes with value 0x20 to the volume_set_id field and 128 bytes with value 0x20 to the the following 37-byte fields in the PVD: copyright_file_id, abstract_file_id, bibliographic_file_id This causes, among other unwanted results the reserved4 field to be overwritten with the value 0x20. To comply with the specification, this field muse be zero. As a result, all FreeBSD distribution images created with makefs have not been 100% valid ISO9660 files. http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=45217 Reviewed by: kientzle Approved by: re (kib) Obtained from: NetBSD MFC after: 3 days
This commit is contained in:
parent
12f4b65fa6
commit
51db4bad81
@ -223,13 +223,12 @@ cd9660_set_defaults(void)
|
||||
/* Make sure the PVD is clear */
|
||||
memset(&diskStructure.primaryDescriptor, 0, 2048);
|
||||
|
||||
memset(diskStructure.primaryDescriptor.volume_set_id, 0x20,32);
|
||||
memset(diskStructure.primaryDescriptor.publisher_id, 0x20,128);
|
||||
memset(diskStructure.primaryDescriptor.preparer_id, 0x20,128);
|
||||
memset(diskStructure.primaryDescriptor.application_id, 0x20,128);
|
||||
memset(diskStructure.primaryDescriptor.copyright_file_id, 0x20,128);
|
||||
memset(diskStructure.primaryDescriptor.abstract_file_id, 0x20,128);
|
||||
memset(diskStructure.primaryDescriptor.bibliographic_file_id, 0x20,128);
|
||||
memset(diskStructure.primaryDescriptor.copyright_file_id, 0x20,37);
|
||||
memset(diskStructure.primaryDescriptor.abstract_file_id, 0x20,37);
|
||||
memset(diskStructure.primaryDescriptor.bibliographic_file_id, 0x20,37);
|
||||
|
||||
strcpy(diskStructure.primaryDescriptor.system_id,"NetBSD");
|
||||
|
||||
@ -669,11 +668,11 @@ cd9660_finalize_PVD(void)
|
||||
cd9660_pad_string_spaces(diskStructure.primaryDescriptor.application_id,
|
||||
128);
|
||||
cd9660_pad_string_spaces(
|
||||
diskStructure.primaryDescriptor.copyright_file_id, 128);
|
||||
diskStructure.primaryDescriptor.copyright_file_id, 37);
|
||||
cd9660_pad_string_spaces(
|
||||
diskStructure.primaryDescriptor.abstract_file_id, 128);
|
||||
diskStructure.primaryDescriptor.abstract_file_id, 37);
|
||||
cd9660_pad_string_spaces(
|
||||
diskStructure.primaryDescriptor.bibliographic_file_id, 128);
|
||||
diskStructure.primaryDescriptor.bibliographic_file_id, 37);
|
||||
|
||||
/* Setup dates */
|
||||
time(&tim);
|
||||
@ -1307,6 +1306,8 @@ cd9660_rrip_move_directory(cd9660node *dir)
|
||||
/* Set the new name */
|
||||
memset(dir->isoDirRecord->name, 0, ISO_FILENAME_MAXLENGTH_WITH_PADDING);
|
||||
strncpy(dir->isoDirRecord->name, newname, 8);
|
||||
dir->isoDirRecord->length[0] = 34 + 8;
|
||||
dir->isoDirRecord->name_len[0] = 8;
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user