Date: Mon, 23 Dec 2013 15:40:35 GMT From: Kurt Lidl <lidl@pix.net> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/185138: makefs doesn't record serial numbers in rock ridge extensions Message-ID: <201312231540.rBNFeZeT066603@oldred.freebsd.org> Resent-Message-ID: <201312231550.rBNFo0nF093134@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 185138 >Category: misc >Synopsis: makefs doesn't record serial numbers in rock ridge extensions >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Dec 23 15:50:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Kurt Lidl >Release: 9.2-RELEASE >Organization: >Environment: FreeBSD host.pix.net 9.2-RELEASE-p1 FreeBSD 9.2-RELEASE-p1 #0: Fri Nov 29 23:01:31 PST 2013 [redacted]:/usr/obj/usr/src/sys/GENERIC amd64 >Description: Makefs, used to generated the cd9660 filesystem for boot media, does not record the serial number in the rock ridge extensions. This can be used, when extracting a filesystem from the cd9660 filesystem, to detect hard links in the filesystem. This was pointed out several months ago: http://lists.freebsd.org/pipermail/freebsd-stable/2013-April/073050.html Other bugs were also listed in the followup to that thread -- it looks like all the other issues have been addressed. >How-To-Repeat: >Fix: Patch attached with submission follows: diff --git a/usr.sbin/makefs/cd9660/iso9660_rrip.c b/usr.sbin/makefs/cd9660/iso9660_rrip.c --- a/usr.sbin/makefs/cd9660/iso9660_rrip.c +++ b/usr.sbin/makefs/cd9660/iso9660_rrip.c @@ -629,28 +629,29 @@ cd9660_createSL(cd9660node *node) } } } } int cd9660node_rrip_px(struct ISO_SUSP_ATTRIBUTES *v, fsnode *pxinfo) { - v->attr.rr_entry.PX.h.length[0] = 36; + v->attr.rr_entry.PX.h.length[0] = 44; v->attr.rr_entry.PX.h.version[0] = 1; cd9660_bothendian_dword(pxinfo->inode->st.st_mode, v->attr.rr_entry.PX.mode); cd9660_bothendian_dword(pxinfo->inode->st.st_nlink, v->attr.rr_entry.PX.links); cd9660_bothendian_dword(pxinfo->inode->st.st_uid, v->attr.rr_entry.PX.uid); cd9660_bothendian_dword(pxinfo->inode->st.st_gid, v->attr.rr_entry.PX.gid); + cd9660_bothendian_dword(pxinfo->inode->st.st_ino, + v->attr.rr_entry.PX.serial); - /* Ignoring the serial number for now */ return 1; } int cd9660node_rrip_pn(struct ISO_SUSP_ATTRIBUTES *pn_field, fsnode *fnode) { pn_field->attr.rr_entry.PN.h.length[0] = 20; pn_field->attr.rr_entry.PN.h.version[0] = 1; diff --git a/usr.sbin/makefs/cd9660/iso9660_rrip.h b/usr.sbin/makefs/cd9660/iso9660_rrip.h --- a/usr.sbin/makefs/cd9660/iso9660_rrip.h +++ b/usr.sbin/makefs/cd9660/iso9660_rrip.h @@ -98,17 +98,17 @@ #define SL_FLAGS_ROOT 8 typedef struct { ISO_SUSP_HEADER h; u_char mode [ISODCL(5,12)]; u_char links [ISODCL(13,20)]; u_char uid [ISODCL(21,28)]; u_char gid [ISODCL(29,36)]; - u_char serial [ISODCL(37,44)];/* Not used */ + u_char serial [ISODCL(37,44)]; } ISO_RRIP_PX; typedef struct { ISO_SUSP_HEADER h; u_char high [ISODCL(5,12)]; u_char low [ISODCL(13,20)]; } ISO_RRIP_PN; >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312231540.rBNFeZeT066603>