From: Adam Majer Date: 2020-05-11 11:47:23+0000 Fix an integer overflow in partition table calculation when chrp-boot is enabled and a large ISO image is created. Index: cdrtools-3.02/mkisofs/mac_label.c =================================================================== --- cdrtools-3.02.orig/mkisofs/mac_label.c +++ cdrtools-3.02/mkisofs/mac_label.c @@ -67,8 +67,8 @@ gen_prepboot_label(ml) { struct directory_entry *de; int i = 0; - int block; - int size; + unsigned block; + unsigned size; MacLabel *mac_label = (MacLabel *) ml; if (verbose > 1) { @@ -98,7 +98,7 @@ gen_prepboot_label(ml) mac_label->image[i].startSect[2] = 0; mac_label->image[i].startSect[3] = 0; - size = (last_extent - session_start) * 2048 / 512; + size = (unsigned)(last_extent - session_start) * (2048 / 512); mac_label->image[i].size[0] = size & 0xff; mac_label->image[i].size[1] = (size >> 8) & 0xff; mac_label->image[i].size[2] = (size >> 16) & 0xff; @@ -115,7 +115,7 @@ gen_prepboot_label(ml) /* NOTREACHED */ } /* get size and block in 512-byte blocks */ - block = get_733(de->isorec.extent) * 2048 / 512; + block = get_733(de->isorec.extent) * (2048 / 512); size = get_733(de->isorec.size) / 512 + 1; fprintf(stderr, _("PReP boot partition %d is \"%s\"\n"), i + 1, prep_boot_image[i - use_chrp_boot]);