svn commit: r183914 - in user/netchild/coverity/src/sys: nfsclient nfsserver

Alexander Leidinger netchild at FreeBSD.org
Wed Oct 15 14:32:43 UTC 2008


Author: netchild
Date: Wed Oct 15 14:32:43 2008
New Revision: 183914
URL: http://svn.freebsd.org/changeset/base/183914

Log:
  Fixes (probably) for CID 1076 and 1528.
  
  Found by:	Coverity Prevent

Modified:
  user/netchild/coverity/src/sys/nfsclient/nfs_subs.c
  user/netchild/coverity/src/sys/nfsserver/nfs_serv.c

Modified: user/netchild/coverity/src/sys/nfsclient/nfs_subs.c
==============================================================================
--- user/netchild/coverity/src/sys/nfsclient/nfs_subs.c	Wed Oct 15 14:29:35 2008	(r183913)
+++ user/netchild/coverity/src/sys/nfsclient/nfs_subs.c	Wed Oct 15 14:32:43 2008	(r183914)
@@ -980,8 +980,12 @@ nfsm_mtofh_xx(struct vnode *d, struct vn
 			return EBADRPC;
 		if (*f)
 			*f = fxdr_unsigned(int, *tl);
-		else if (fxdr_unsigned(int, *tl))
-			nfsm_adv_xx(NFSX_V3FATTR, md, dpos);
+		else if (fxdr_unsigned(int, *tl)) {
+			/* XXX: CID 1076, NFSM_ADV() can be used instead too */
+			t1 = nfsm_adv_xx(NFSX_V3FATTR, md, dpos);
+			if (t1 != 0)
+				return EBADRPC;
+		}
 	}
 	if (*f) {
 		ttvp = *v;

Modified: user/netchild/coverity/src/sys/nfsserver/nfs_serv.c
==============================================================================
--- user/netchild/coverity/src/sys/nfsserver/nfs_serv.c	Wed Oct 15 14:29:35 2008	(r183913)
+++ user/netchild/coverity/src/sys/nfsserver/nfs_serv.c	Wed Oct 15 14:32:43 2008	(r183914)
@@ -4062,7 +4062,14 @@ nfsrv_fsinfo(struct nfsrv_descript *nfsd
 	}
 
 	/* XXX Try to make a guess on the max file size. */
-	VFS_STATFS(vp->v_mount, &sb, curthread);
+	error = VFS_STATFS(vp->v_mount, &sb, curthread);
+	if (error) {
+		/* XXX: CID 1528 */
+		nfsm_reply(NFSX_UNSIGNED);
+		nfsm_srvpostop_attr(getret, &at);
+		error = 0;
+		goto nfsmout;
+	}
 	maxfsize = (u_quad_t)0x80000000 * sb.f_bsize - 1;
 
 	getret = VOP_GETATTR(vp, &at, cred);


More information about the svn-src-user mailing list