Module Name:    src
Committed By:   hannken
Date:           Mon Dec 29 15:28:08 UTC 2014

Modified Files:
        src/sys/fs/v7fs: v7fs_vnops.c

Log Message:
v7fs_getattr: adjust size of symlinks by -1 to compensate the trailing NUL.

Should fix the v7fs part of PR kern/48864.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/fs/v7fs/v7fs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/fs/v7fs/v7fs_vnops.c
diff -u src/sys/fs/v7fs/v7fs_vnops.c:1.17 src/sys/fs/v7fs/v7fs_vnops.c:1.18
--- src/sys/fs/v7fs/v7fs_vnops.c:1.17	Fri Aug  8 19:15:33 2014
+++ src/sys/fs/v7fs/v7fs_vnops.c	Mon Dec 29 15:28:08 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: v7fs_vnops.c,v 1.17 2014/08/08 19:15:33 gson Exp $	*/
+/*	$NetBSD: v7fs_vnops.c,v 1.18 2014/12/29 15:28:08 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004, 2011 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: v7fs_vnops.c,v 1.17 2014/08/08 19:15:33 gson Exp $");
+__KERNEL_RCSID(0, "$NetBSD: v7fs_vnops.c,v 1.18 2014/12/29 15:28:08 hannken Exp $");
 #if defined _KERNEL_OPT
 #include "opt_v7fs.h"
 #endif
@@ -421,6 +421,11 @@ v7fs_getattr(void *v)
 	vap->va_fsid = v7fsmount->devvp->v_rdev;
 	vap->va_fileid = inode->inode_number;
 	vap->va_size = vp->v_size;
+	if (vp->v_type == VLNK) {
+		/* Ajust for trailing NUL. */
+		KASSERT(vap->va_size > 0);
+		vap->va_size -= 1;
+	}
 	vap->va_atime.tv_sec = inode->atime;
 	vap->va_mtime.tv_sec = inode->mtime;
 	vap->va_ctime.tv_sec = inode->ctime;

Reply via email to