kern/128942: cd9660 driver to accept IEEE_P1282 and IEEE_1282
tagged images [patch]
J.R. Oldroyd
fbsd at opal.com
Mon Nov 17 09:50:02 PST 2008
>Number: 128942
>Category: kern
>Synopsis: cd9660 driver to accept IEEE_P1282 and IEEE_1282 tagged images [patch]
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Nov 17 17:50:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: J.R. Oldroyd
>Release: FreeBSD 7.1-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD vougeot.opal.com 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #9: Wed Oct 29 21:37:25 EDT 2008 xx at vougeot.opal.com:/usr/src/sys/i386/compile/VOUGEOT i386
>Description:
The FreeBSD cd9660 driver looks for the string "RRIP_1991A" in the Rock
Ridge Extensions Record "ER". In 1994, the Rock Ridge Interchange Protocol
standard was adopted as IEEE draft 1282 and then as IEEE standard 1282. This
added strings "IEEE_P1282" and "IEEE_1282" as acceptable values for the ER
record. The FreeBSD driver is now - ahem - 14 years behind in recognising
this. The patch below updates the driver to accept all three ER
identification strings.
A similar change already exists in the NetBSD cd9660 driver.
>How-To-Repeat:
Create an ISO image using a libisofs-based application which emits the tag
IEEE_1282 in the ER record. Mount it. Observe that no Rock Ridge info is
visible when listing files in that filesystem.
>Fix:
--- fs/cd9660/cd9660_rrip.c.orig 2007-02-11 08:54:25.000000000 -0500
+++ fs/cd9660/cd9660_rrip.c 2008-11-16 23:14:17.000000000 -0500
@@ -467,8 +467,12 @@
ISO_RRIP_EXTREF *p;
ISO_RRIP_ANALYZE *ana;
{
- if (isonum_711(p->len_id) != 10
- || bcmp((char *)p + 8,"RRIP_1991A",10)
+ if ( ! ((isonum_711(p->len_id) == 10
+ && bcmp((char *)p + 8,"RRIP_1991A",10) == 0)
+ || (isonum_711(p->len_id) == 10
+ && bcmp((char *)p + 8,"IEEE_P1282",10) == 0)
+ || (isonum_711(p->len_id) == 9
+ && bcmp((char *)p + 8,"IEEE_1282", 9) == 0))
|| isonum_711(p->version) != 1)
return 0;
ana->fields &= ~ISO_SUSP_EXTREF;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list