Module Name:    src
Committed By:   christos
Date:           Wed Jan 23 20:46:18 UTC 2019

Modified Files:
        src/usr.sbin/rpcbind: util.c

Log Message:
- fix wrong size allocation that triggers buffer overflow
- remove unneeded casts and assertions
XXX: pullup-8


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/usr.sbin/rpcbind/util.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/rpcbind/util.c
diff -u src/usr.sbin/rpcbind/util.c:1.22 src/usr.sbin/rpcbind/util.c:1.23
--- src/usr.sbin/rpcbind/util.c:1.22	Thu Jan  3 14:04:21 2019
+++ src/usr.sbin/rpcbind/util.c	Wed Jan 23 15:46:18 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: util.c,v 1.22 2019/01/03 19:04:21 christos Exp $	*/
+/*	$NetBSD: util.c,v 1.23 2019/01/23 20:46:18 christos Exp $	*/
 /* $FreeBSD: head/usr.sbin/rpcbind/util.c 300973 2016-05-29 20:28:01Z ngie $ */
 
 /*-
@@ -130,14 +130,14 @@ addrmerge(struct netbuf *caller, char *s
 	if (serv_nbp == NULL)
 		return NULL;
 
-	serv_sa = (struct sockaddr *)serv_nbp->buf;
+	serv_sa = serv_nbp->buf;
 	if (clnt_uaddr != NULL) {
 		clnt_nbp = uaddr2taddr(nconf, clnt_uaddr);
 		if (clnt_nbp == NULL) {
 			free(serv_nbp);
 			return NULL;
 		}
-		clnt_sa = (struct sockaddr *)clnt_nbp->buf;
+		clnt_sa = clnt_nbp->buf;
 		if (clnt_sa->sa_family == AF_LOCAL) {
 			free(serv_nbp);
 			free(clnt_nbp);
@@ -145,7 +145,7 @@ addrmerge(struct netbuf *caller, char *s
 			return strdup(serv_uaddr);
 		}
 	} else {
-		clnt_sa = malloc(sizeof(*clnt_sa));
+		clnt_sa = malloc(clnt->sa_len);
 		if (clnt_sa == NULL) {
 			free(serv_nbp);
 			return NULL;
@@ -267,7 +267,6 @@ found:
 		break;				
 #ifdef INET6
 	case AF_INET6:
-		assert(newsin6);
 		memcpy(newsin6, ifsin6, clnt_sa->sa_len);
 		newsin6->sin6_port = servsin6->sin6_port;
 		tbuf.maxlen = sizeof (struct sockaddr_storage);

Reply via email to