Hello,
playing with RockRidge extensions recently I found two issues with the
current implementation of the linux kernel's rockridge reading code:
a) when a SL field describing part of a symbolic link only contains
a single root component and the rest of the link is continued in the
following SL fields, the linux kernel will make this link read something
like '//usr/local/lib' instead of '/usr/local/lib'.
The reason for this problem is that a '/' will be added to the symlink
string whenever there's a SL field change, regardless of what's been
done before. Unfortunately, the '/' has already been added in case of a
root component. Although a flag called rootflag is set accordingly to
indicate that the root item has been processed, this flag is disregarded
when adding the '/' a second time.
The attached patch will query the rootflag and add the '/' if it isn't
already set.
Please note that other unices, prominently Mac OS X, will read
our symbolic link correctly
b) another issue we found with the linux kernel's rockridge code is that,
although explicitly stated in the rockridge draft standard, the offset
within a directory entry's system use area to start looking for
SUSP fields, cannot be set by means of the 'SP' susp initializer field.
Also, this field is not being looked for behind eventual XA attributes
as used on MODE2 ISO9660 filesystems.
Attached patch will fix this behavior by reading the susp offset as
provided in the SP.skip field of the 'SP' attribute. It will also look
for the susp initializer at offset 14 of the system use area if it couldn't
be found at offset 0 to allow for CDROMs containing both XA and rockridge
attributes.
Please find the attached patch against Kernel 2.4.2
Regards,
A.Eckleder, Ahead Software GmbH
This archive was generated by hypermail 2b29 : Sat Mar 31 2001 - 21:00:21 EST