diff options
author | eadler <eadler@FreeBSD.org> | 2011-12-21 20:27:41 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2011-12-21 20:27:41 +0000 |
commit | 3c01e31040c2984c114ac9977789b76185e726e6 (patch) | |
tree | 7c566920fb5ced92e004cf337adc73daa4f7fdb7 /usr.sbin/ypserv | |
parent | d24fa001e9004ec4a6f53ac209eeb53f2b6cc1ab (diff) | |
download | FreeBSD-src-3c01e31040c2984c114ac9977789b76185e726e6.zip FreeBSD-src-3c01e31040c2984c114ac9977789b76185e726e6.tar.gz |
- Remove extraneous null ptr deref checks
- Fix memory leak
Submitted by: Slono Slono <slonoman2011@yandex.ru>
Approved by: jhb
MFC after: 1 week
Diffstat (limited to 'usr.sbin/ypserv')
-rw-r--r-- | usr.sbin/ypserv/yp_main.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/usr.sbin/ypserv/yp_main.c b/usr.sbin/ypserv/yp_main.c index 7473e6f..6da1ea5 100644 --- a/usr.sbin/ypserv/yp_main.c +++ b/usr.sbin/ypserv/yp_main.c @@ -256,6 +256,7 @@ create_service(const int sock, const struct netconfig *nconf, const struct __rpc_sockinfo *si) { int error; + char *sname; SVCXPRT *transp; struct addrinfo hints, *res, *res0; @@ -263,6 +264,7 @@ create_service(const int sock, const struct netconfig *nconf, struct bindaddrlistent *blep; struct netbuf svcaddr; + sname = NULL; SLIST_INIT(&sle_head); memset(&hints, 0, sizeof(hints)); memset(&svcaddr, 0, sizeof(svcaddr)); @@ -342,7 +344,6 @@ create_service(const int sock, const struct netconfig *nconf, if (strncmp("0", servname, 1) == 0) { struct sockaddr *sap; socklen_t slen; - char *sname; sname = malloc(NI_MAXSERV); if (sname == NULL) { @@ -362,6 +363,7 @@ create_service(const int sock, const struct netconfig *nconf, strerror(errno)); freeaddrinfo(res0); close(s); + free(sname); return -1; } error = getnameinfo(sap, slen, @@ -373,6 +375,7 @@ create_service(const int sock, const struct netconfig *nconf, strerror(errno)); freeaddrinfo(res0); close(s); + free(sname); return -1; } servname = sname; @@ -441,7 +444,7 @@ create_service(const int sock, const struct netconfig *nconf, } /* XXX: ignore error intentionally */ rpcb_set(YPPROG, YPVERS, nconf, &svcaddr); - + free (sname); freeaddrinfo(res0); return 0; } |