diff options
author | dillon <dillon@FreeBSD.org> | 1999-11-08 19:10:16 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 1999-11-08 19:10:16 +0000 |
commit | 2fb940a103648229028749446e430c2f2b4af584 (patch) | |
tree | 2e17ef440df8c980133f2220afc2fe2d5d10ad0c /sys/nfs | |
parent | 0b538034b3e67add0b95537d77d38791f8ef2491 (diff) | |
download | FreeBSD-src-2fb940a103648229028749446e430c2f2b4af584.zip FreeBSD-src-2fb940a103648229028749446e430c2f2b4af584.tar.gz |
Fix nfssvc_addsock() to not attempt to free a NULL socket structure
when returning an error. Bug fix was extracted from the PR. The PR
is not yet entirely resolved by this commit.
PR: kern/13049
Reviewed by: Matt Dillon <dillon@freebsd.org>
Submitted by: Ian Dowse <iedowse@maths.tcd.ie>
Diffstat (limited to 'sys/nfs')
-rw-r--r-- | sys/nfs/nfs_syscalls.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c index 054950b..ff2efe5 100644 --- a/sys/nfs/nfs_syscalls.c +++ b/sys/nfs/nfs_syscalls.c @@ -334,14 +334,16 @@ nfssvc_addsock(fp, mynam, p) if (so->so_proto->pr_protocol == IPPROTO_UDP) { tslp = nfs_udpsock; if (tslp->ns_flag & SLP_VALID) { - FREE(mynam, M_SONAME); + if (mynam != NULL) + FREE(mynam, M_SONAME); return (EPERM); } #ifdef ISO } else if (so->so_proto->pr_protocol == ISOPROTO_CLTP) { tslp = nfs_cltpsock; if (tslp->ns_flag & SLP_VALID) { - FREE(mynam, M_SONAME); + if (mynam != NULL) + FREE(mynam, M_SONAME); return (EPERM); } #endif /* ISO */ @@ -352,7 +354,8 @@ nfssvc_addsock(fp, mynam, p) siz = NFS_MAXPACKET; error = soreserve(so, siz, siz); if (error) { - FREE(mynam, M_SONAME); + if (mynam != NULL) + FREE(mynam, M_SONAME); return (error); } |