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 &&
openSUSE Build Service is sponsored by