File genisoimage-fix-TRANS.TBL-with-large-files.patch of Package wodim.10091
From: Jean Delvare <jdelvare@suse.de>
Subject: Fix a crash when -T is used with large files
References: bsc#1100466
Fix the generation of TRANS.TBL when files are larger than 4 GB. Such
large files span over multiple extents, and each extent has a
directory entry, but the file name is only allocated once, and the
file must be listed only once.
---
genisoimage/tree.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
--- a/genisoimage/tree.c
+++ b/genisoimage/tree.c
@@ -577,6 +577,12 @@ got_valid_name:
#endif /* APPLE_HYB */
if (s_entry->de_flags & INHIBIT_ISO9660_ENTRY)
continue;
+#ifdef USE_LARGEFILES
+ /* skip all but the last extent from a multi extent file */
+ if ((s_entry->de_flags & MULTI_EXTENT) &&
+ (s_entry->isorec.flags[0] & ISO_MULTIEXTENT))
+ continue;
+#endif /* USE_LARGEFILES */
if (s_entry->table) {
/*
* Max namelen, a space before and a space
@@ -716,6 +722,14 @@ got_valid_name:
if (strcmp(s_entry->name, ".") == 0 ||
strcmp(s_entry->name, "..") == 0)
continue;
+#ifdef USE_LARGEFILES
+ /* skip all but the last extent from a multi extent file */
+ if ((s_entry->de_flags & MULTI_EXTENT) &&
+ (s_entry->isorec.flags[0] & ISO_MULTIEXTENT)) {
+ s_entry->table = NULL;
+ continue;
+ }
+#endif /* USE_LARGEFILES */
#ifdef APPLE_HYB
/* skip table entry for the resource fork */
if (apple_both &&