diff options
Diffstat (limited to 'fs/nfsd/nfs3proc.c')
| -rw-r--r-- | fs/nfsd/nfs3proc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index 2dd95ebf4935..6259a4b8579f 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c | |||
| @@ -283,6 +283,16 @@ nfsd3_proc_symlink(struct svc_rqst *rqstp) | |||
| 283 | struct nfsd3_diropres *resp = rqstp->rq_resp; | 283 | struct nfsd3_diropres *resp = rqstp->rq_resp; |
| 284 | __be32 nfserr; | 284 | __be32 nfserr; |
| 285 | 285 | ||
| 286 | if (argp->tlen == 0) | ||
| 287 | RETURN_STATUS(nfserr_inval); | ||
| 288 | if (argp->tlen > NFS3_MAXPATHLEN) | ||
| 289 | RETURN_STATUS(nfserr_nametoolong); | ||
| 290 | |||
| 291 | argp->tname = svc_fill_symlink_pathname(rqstp, &argp->first, | ||
| 292 | argp->tlen); | ||
| 293 | if (IS_ERR(argp->tname)) | ||
| 294 | RETURN_STATUS(nfserrno(PTR_ERR(argp->tname))); | ||
| 295 | |||
| 286 | dprintk("nfsd: SYMLINK(3) %s %.*s -> %.*s\n", | 296 | dprintk("nfsd: SYMLINK(3) %s %.*s -> %.*s\n", |
| 287 | SVCFH_fmt(&argp->ffh), | 297 | SVCFH_fmt(&argp->ffh), |
| 288 | argp->flen, argp->fname, | 298 | argp->flen, argp->fname, |
