Package: isomaster
Version: 1.3.9-1ubuntu1
Severity: important
Tags: patch

El Torito Boot records are being truncated resulting in un-bootable ISO
images.

Discovered on Ubuntu where I've linked the bug report to a bzr branch
containg the fix:

https://bugs.launchpad.net/ubuntu/+bug/1266461i

"Fixes failure of bootable images to boot because the El Torito boot catalog
has a hard-coded sector count of 4 (2048 bytes) instead of using the actual
boot image size."

I have also notified the upstream publisher via his web-based contact
form.

Description: use actual boot image size in El Torito boot catalog
Author: TJ <[email protected]>
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+bug/1266461
Forwarded: yes
Last-Update: 2014-01-06
Index: isomaster/bk/bkWrite.c
===================================================================
--- isomaster.orig/bk/bkWrite.c	2014-01-06 15:17:49.384136000 +0000
+++ isomaster/bk/bkWrite.c	2014-01-06 15:28:47.808981891 +0000
@@ -1174,9 +1174,8 @@
     /* load segment leave it at 0 */
     /* system type, leave it at 0 */
     /* 1 byte unused, leave it at 0 */
-    /* sector count. i have yet to see a boot record with a sector count 
-    * that's not 4 */
-    write721ToByteArray(&(buffer[38]), 4);
+    /* sector count */
+    write721ToByteArray(&(buffer[38]), volInfo->bootRecordSize / NBYTES_VIRTUAL_SECTOR);
     /* logical block number of boot record file. this is not known until 
     * after that file is written */
     *bootRecordSectorNumberOffset = wcSeekTell(volInfo) + 40;
Index: isomaster/bk/bkInternal.h
===================================================================
--- isomaster.orig/bk/bkInternal.h	2014-01-06 16:13:25.003211000 +0000
+++ isomaster/bk/bkInternal.h	2014-01-06 16:24:38.565597428 +0000
@@ -26,6 +26,8 @@
 #define NLS_SYSTEM_AREA 16
 /* number of bytes in a logical block (in practice always 2048) */
 #define NBYTES_LOGICAL_BLOCK 2048
+/* for el torito boot images */
+#define NBYTES_VIRTUAL_SECTOR 512
 
 /*******************************************************************************
 * Joliet allows max 128 bytes
Index: isomaster/bk/bkRead.c
===================================================================
--- isomaster.orig/bk/bkRead.c	2014-01-06 16:37:21.231168000 +0000
+++ isomaster/bk/bkRead.c	2014-01-06 16:37:39.593470342 +0000
@@ -36,9 +36,6 @@
 #define VDTYPE_VOLUMEPARTITION 3
 #define VDTYPE_TERMINATOR 255
 
-/* for el torito boot images */
-#define NBYTES_VIRTUAL_SECTOR 512
-
 /* this function is really just for use in readRockridgeSymlink()
 * returns number of chars appended
 * destMaxLen doesn't include '\0'

Reply via email to