libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libcdio-devel] Invalid/bad directory errors with openSUSE Leap 15.0 ISO


From: Pete Batard
Subject: [Libcdio-devel] Invalid/bad directory errors with openSUSE Leap 15.0 ISO
Date: Sat, 26 May 2018 14:31:00 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

Hi,

I am reporting this issue, since I don't know when/if I'll have the time to investigate it properly and I suspect that we need to alter libcdio to relax some checks.

The issue is that the current libcdio (tested with latest git using MinGW32) bails out with an "Invalid directory" error when trying to process the newest openSUSE Leap ISO9660 image (openSUSE-Leap-15.0-DVD-x86_64.iso).

This ISO (3.7 GB) can be downloaded from https://download.opensuse.org/distribution/leap/15.0/iso/openSUSE-Leap-15.0-DVD-x86_64-Current.iso?mirrorlist

For instance, if you try to run isolist against this image, you only get the following:

-----------------------------------------------------------------------
$ ./isolist /d/ISOs/openSUSE-Leap-15.0-DVD-x86_64.iso
Application: openSUSE-Leap-15.0-DVD-x86_64-Build267.2-Media
Preparer   : KIWI - http://opensuse.github.com/kiwi
Publisher  : SUSE LINUX GmbH
System     : LINUX
Volume     : openSUSE-Leap-15.0-DVD-x86_64267
++ WARN: from_733: broken byte order
++ WARN: Invalid directory stat at offset 510
-----------------------------------------------------------------------

From what I gather, a certain numbers of directories will appear "broken" to libcdio, starting with '/docu'. For instance, this is what you get if you try to extract a file from the '/docu' directory:

-----------------------------------------------------------------------
$ ./isofile /d/ISOs/openSUSE-Leap-15.0-DVD-x86_64.iso docu/RELEASE-NOTES.en.txt
++ WARN: from_733: broken byte order
++ WARN: Bad directory information for docu
Could not get ISO-9660 file information for file docu/RELEASE-NOTES.en.txt
-----------------------------------------------------------------------

Now, if you patch iso9660_fs.c around like 1161 to not return NULL on error but just report the error and move forward:

      if (!p_stat) {
        cdio_warn("Bad directory information for %s", splitpath[0]);
        offset += iso9660_get_dir_len(p_iso9660_dir);
        continue;
      }

then you can successfully extract the file:

-----------------------------------------------------------------------
$ ./isofile /d/ISOs/openSUSE-Leap-15.0-DVD-x86_64.iso docu/RELEASE-NOTES.en.txt
++ WARN: from_733: broken byte order
++ WARN: Bad directory information for docu
Extraction of file 'docu/RELEASE-NOTES.en.txt' from D:/ISOs/openSUSE-Leap-15.0-DVD-x86_64.iso successful.
-----------------------------------------------------------------------

NB: If you want to test the above, you need to have a docu/ folder in your current directory else fopen() will fail.

Therefore, I would suggest that we relax the code so that we don't simply bail out when a "bad directory" is found, especially as, officially, this is a warning rather than a failure.

However, since I have not investigated the issue further, and I have no idea how the openSUSE people are mastering their ISOs, I wouldn't mind hearing the list's thoughts on this. For the record, this issue seems to have been present for earlier openSUSE Leap ISOs, so it's not a punctual problem that only started with the latest version.

Regards,

/Pete



reply via email to

[Prev in Thread] Current Thread [Next in Thread]