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