Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Jan 2017 06:22:35 +0000 (UTC)
From:      "Conrad E. Meyer" <cem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r311666 - head/sys/fs/cd9660
Message-ID:  <201701080622.v086MZ7o022055@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cem
Date: Sun Jan  8 06:22:35 2017
New Revision: 311666
URL: https://svnweb.freebsd.org/changeset/base/311666

Log:
  Do not truncate inode calculation from ISO9660 block offset
  
  PR:		190655
  Reported by:	Thomas Schmitt <scdbackup at gmx.net>
  Obtained from:	NetBSD sys/fs/cd9660/cd9660_node.c,r1.31

Modified:
  head/sys/fs/cd9660/cd9660_node.c

Modified: head/sys/fs/cd9660/cd9660_node.c
==============================================================================
--- head/sys/fs/cd9660/cd9660_node.c	Sun Jan  8 06:21:49 2017	(r311665)
+++ head/sys/fs/cd9660/cd9660_node.c	Sun Jan  8 06:22:35 2017	(r311666)
@@ -316,7 +316,14 @@ isodirino(isodir, imp)
 {
 	cd_ino_t ino;
 
-	ino = (isonum_733(isodir->extent) + isonum_711(isodir->ext_attr_length))
-	      << imp->im_bshift;
-	return (ino);
+	/*
+	 * Note there is an inverse calculation in
+	 * cd9660_vfsops.c:cd9660_vget_internal():
+	 *   ip->iso_start = ino >> imp->im_bshift;
+	 * and also a calculation of the isodir pointer
+	 * from an inode in cd9660_vnops.c:cd9660_readlink()
+	 */
+	ino = ((cd_ino_t)isonum_733(isodir->extent) +
+		isonum_711(isodir->ext_attr_length)) << imp->im_bshift;
+	return ino;
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701080622.v086MZ7o022055>