[Bug 805116] [NEW] genisoimage generates bad iso9660 directory records when excluding ".*"

Huriaux Christophe 805116 at bugs.launchpad.net
Sun Jul 3 13:54:38 UTC 2011


Public bug reported:

genisoimage has a strange behavior when I try to exclude "hidden files"
from the output ISO with the -m switch, it doesn't generate good "parent
directory" records in subdirectories (see below) : the ISO image is thus
non-compliant with the ISO9660 standard.

The following content with one directory at root and two files in this directory can reproduce this :
$ tree -a iso_content/
iso_content/
└── TestDir
    ├── file
    └── .hidden

1 directory, 2 files


I generate two ISO in order to compare the results, one with the hidden files excluded and the other with the complete tree (output of the second call is in attachment) :
$ mkisofs -o with_hidden.iso iso_content
$ mkisofs -m ".*" -o without_hidden.iso iso_content

The directory record concerning the directory "TestDir" in the full ISO is the following (sector 24) :
$ hexdump -s 49152 -n 2048 -C with_hidden.iso 
0000c000  22 00 18 00 00 00 00 00  00 18 00 08 00 00 00 00  |"...............|
0000c010  08 00 6f 07 03 0f 07 0d  08 02 00 00 01 00 00 01  |..o.............|
0000c020  01 00 22 00 17 00 00 00  00 00 00 17 00 08 00 00  |..".............|
0000c030  00 00 08 00 6f 07 03 0f  06 0d 08 02 00 00 01 00  |....o...........|
0000c040  00 01 01 01 28 00 19 00  00 00 00 00 00 19 00 00  |....(...........|
0000c050  00 00 00 00 00 00 6f 07  03 0f 06 1a 08 00 00 00  |......o.........|
0000c060  01 00 00 01 07 46 49 4c  45 2e 3b 31 2c 00 19 00  |.....FILE.;1,...|
0000c070  00 00 00 00 00 19 00 00  00 00 00 00 00 00 6f 07  |..............o.|
0000c080  03 0f 07 0d 08 00 00 00  01 00 00 01 0a 5f 48 49  |............._HI|
0000c090  44 44 45 4e 2e 3b 31 00  00 00 00 00 00 00 00 00  |DDEN.;1.........|
0000c0a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0000c800

The first record should describe the current directory record sector. The extent location at 0xC002 (0x00000018) designates the sector 24 which is OK.
The second record should describe the parent directory record sector. The extent location at 0xC024 (0x00000017) designates the sector 23, which is OK too.


If I look at the same location for the ISO with hidden files excluded :
$ hexdump -s 49152 -n 2048 -C without_hidden.iso 
0000c000  22 00 18 00 00 00 00 00  00 18 00 08 00 00 00 00  |"...............|
0000c010  08 00 6f 07 03 0f 19 2b  08 02 00 00 01 00 00 01  |..o....+........|
0000c020  01 00 22 00 18 00 00 00  00 00 00 18 00 08 00 00  |..".............|
0000c030  00 00 08 00 6f 07 03 0f  19 2b 08 02 00 00 01 00  |....o....+......|
0000c040  00 01 01 01 28 00 19 00  00 00 00 00 00 19 00 00  |....(...........|
0000c050  00 00 00 00 00 00 6f 07  03 0f 06 1a 08 00 00 00  |......o.........|
0000c060  01 00 00 01 07 46 49 4c  45 2e 3b 31 00 00 00 00  |.....FILE.;1....|
0000c070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0000c800

The first and second records (at 0xC002 and 0xC024) both points to the
*current directory*.


 The ISO9660/ECMA-119 standards explicitly says that the second record should describe the parent record in all directories except the root directory, this behavior is thus undesirable and could breaks ISO9660 implementations which only rely on the records and not on the path table to traverse the directories.


-------------------------------------------
Ubuntu 11.04 Natty Narwhal
genisoimage 9:1.1.11-1ubuntu2 .

** Affects: cdrkit (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: genisoimage mkisofs

-- 
You received this bug notification because you are a member of Ubuntu
Burning Team, which is subscribed to cdrkit in Ubuntu.
https://bugs.launchpad.net/bugs/805116

Title:
  genisoimage generates bad iso9660 directory records when excluding
  ".*"

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cdrkit/+bug/805116/+subscriptions



More information about the Ubuntu-burning mailing list