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;
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to