diff --git a/sys/fs/nfsserver/nfs_nfsdkrpc.c b/sys/fs/nfsserver/nfs_nfsdkrpc.c index 337951b..c448cae 100644 --- a/sys/fs/nfsserver/nfs_nfsdkrpc.c +++ b/sys/fs/nfsserver/nfs_nfsdkrpc.c @@ -413,9 +413,15 @@ int nfsrvd_nfsd(struct thread *td, struct nfsd_nfsd_args *args) { char principal[MAXHOSTNAMELEN + 5]; - int error = 0; + int error; bool_t ret2, ret3, ret4; + if (args->minthreads < 1 || args->maxthreads < 1 || + (args->minthreads > args->maxthreads)) { + error = EINVAL; + goto out; + } + error = copyinstr(args->principal, principal, sizeof (principal), NULL); if (error) diff --git a/sys/nfsserver/nfs_srvkrpc.c b/sys/nfsserver/nfs_srvkrpc.c index 2581092..ecc80be 100644 --- a/sys/nfsserver/nfs_srvkrpc.c +++ b/sys/nfsserver/nfs_srvkrpc.c @@ -423,6 +423,9 @@ nfssvc_nfsd(struct thread *td, struct nfsd_nfsd_args *args) int error; if (args) { + if (args->minthreads < 1 || args->maxthreads < 1 || + (args->minthreads > args->maxthreads)) + return (EINVAL); error = copyinstr(args->principal, principal, sizeof(principal), NULL); if (error)