From: Kirk McKusick Date: Sat, 17 Feb 1990 05:31:19 +0000 (-0800) Subject: have to null terminate name if rounding up packet size (from gmf@osf.org) X-Git-Tag: BSD-4_3_Reno-Snapshot-Development~4455 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/1389ccec884f4910df806aa1f06e0a59315b20e2 have to null terminate name if rounding up packet size (from gmf@osf.org) SCCS-vsn: sys/nfs/nfs_vnops.c 7.27 --- diff --git a/usr/src/sys/nfs/nfs_vnops.c b/usr/src/sys/nfs/nfs_vnops.c index d3b041a515..ec427cd07e 100644 --- a/usr/src/sys/nfs/nfs_vnops.c +++ b/usr/src/sys/nfs/nfs_vnops.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#)nfs_vnops.c 7.26 (Berkeley) %G% + * @(#)nfs_vnops.c 7.27 (Berkeley) %G% */ /* @@ -1037,6 +1037,7 @@ nfs_readdir(vp, uiop, cred) register u_long *p; register caddr_t cp; register long t1; + long tlen; caddr_t bpos, dpos, cp2; u_long xid; int error = 0; @@ -1079,8 +1080,13 @@ nfs_readdir(vp, uiop, cred) goto nfsmout; } dp->d_namlen = (u_short)len; - len = nfsm_rndup(len); - nfsm_adv(len); + nfsm_adv(len); /* Point past name */ + tlen = nfsm_rndup(len); + if (tlen != len) { /* If name not on rounded boundary */ + *dpos = '\0'; /* Null-terminate */ + nfsm_adv(tlen - len); + len = tlen; + } nfsm_disecton(p, u_long *, 2*NFSX_UNSIGNED); off = fxdr_unsigned(off_t, *p); *p++ = 0; /* Ensures null termination of name */