diff options
| author | Hiroki Sato <hrs@FreeBSD.org> | 2007-01-07 13:22:49 +0000 | 
|---|---|---|
| committer | Hiroki Sato <hrs@FreeBSD.org> | 2007-01-07 13:22:49 +0000 | 
| commit | 4b3d91785068d2e02d06fc7549e7286ea99b02de (patch) | |
| tree | 4b13ef0571487bb9e950aa88208c4cffeb5123fd | |
| parent | 440a471883974628569b4abf6dda08a5a43ed9dc (diff) | |
Notes
| -rw-r--r-- | sys/nfsserver/nfs_srvsubs.c | 18 | ||||
| -rw-r--r-- | sys/nfsserver/nfsm_subs.h | 3 | 
2 files changed, 20 insertions, 1 deletions
| diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c index bc0f19899d2f..0ab5825a9576 100644 --- a/sys/nfsserver/nfs_srvsubs.c +++ b/sys/nfsserver/nfs_srvsubs.c @@ -1338,6 +1338,24 @@ nfsm_srvnamesiz_xx(int *s, int m, struct mbuf **md, caddr_t *dpos)  	return 0;  } +int +nfsm_srvnamesiz0_xx(int *s, int m, struct mbuf **md, caddr_t *dpos) +{ +	u_int32_t *tl; + +	NFSD_LOCK_DONTCARE(); + +	tl = nfsm_dissect_xx_nonblock(NFSX_UNSIGNED, md, dpos); +	if (tl == NULL) +		return EBADRPC; +	*s = fxdr_unsigned(int32_t, *tl); +	if (*s > m) +		return NFSERR_NAMETOL; +	if (*s < 0) +		return EBADRPC; +	return 0; +} +  void  nfsm_clget_xx(u_int32_t **tl, struct mbuf *mb, struct mbuf **mp,      char **bp, char **be, caddr_t bpos, int droplock) diff --git a/sys/nfsserver/nfsm_subs.h b/sys/nfsserver/nfsm_subs.h index 82e7e25bb284..b605c5df7b20 100644 --- a/sys/nfsserver/nfsm_subs.h +++ b/sys/nfsserver/nfsm_subs.h @@ -74,6 +74,7 @@  int	nfsm_srvstrsiz_xx(int *s, int m, struct mbuf **md, caddr_t *dpos);  int	nfsm_srvnamesiz_xx(int *s, int m, struct mbuf **md, caddr_t *dpos); +int	nfsm_srvnamesiz0_xx(int *s, int m, struct mbuf **md, caddr_t *dpos);  int	nfsm_srvmtofh_xx(fhandle_t *f, struct nfsrv_descript *nfsd,  	    struct mbuf **md, caddr_t *dpos);  int	nfsm_srvsattr_xx(struct vattr *a, struct mbuf **md, caddr_t *dpos); @@ -101,7 +102,7 @@ do { \  #define	nfsm_srvpathsiz(s) \  do { \  	int t1; \ -	t1 = nfsm_srvnamesiz_xx(&(s), NFS_MAXPATHLEN, &md, &dpos); \ +	t1 = nfsm_srvnamesiz0_xx(&(s), NFS_MAXPATHLEN, &md, &dpos); \  	if (t1) { \  		error = t1; \  		nfsm_reply(0); \ | 
