Blame SOURCES/rpcbind-1.2.5-covscan-resource-leaks.patch

e90576
diff -up rpcbind-1.2.5/src/rpcbind.c.orig rpcbind-1.2.5/src/rpcbind.c
175e7c
--- rpcbind-1.2.5/src/rpcbind.c.orig	2020-02-06 14:19:34.199330296 -0500
175e7c
+++ rpcbind-1.2.5/src/rpcbind.c	2020-02-06 14:20:19.069973902 -0500
175e7c
@@ -350,7 +350,7 @@ init_transport(struct netconfig *nconf)
e90576
 {
e90576
 	int fd = -1;
e90576
 	struct t_bind taddr;
e90576
-	struct addrinfo hints, *res;
e90576
+	struct addrinfo hints, *res = NULL;
e90576
 	struct __rpc_sockinfo si;
e90576
 	SVCXPRT	*my_xprt = NULL;
e90576
 	int status;	/* bound checking ? */
175e7c
@@ -827,8 +827,12 @@ got_socket:
e90576
 	}
e90576
 #endif
e90576
 
e90576
+	if (res != NULL)
e90576
+		freeaddrinfo(res);
e90576
 	return (0);
e90576
 error:
e90576
+	if (res != NULL)
e90576
+		freeaddrinfo(res);
e90576
 	close(fd);
e90576
 	return (1);
e90576
 }
e90576
diff -up rpcbind-1.2.5/src/rpcb_stat.c.orig rpcbind-1.2.5/src/rpcb_stat.c
e90576
--- rpcbind-1.2.5/src/rpcb_stat.c.orig	2018-08-15 10:51:19.000000000 -0400
175e7c
+++ rpcbind-1.2.5/src/rpcb_stat.c	2020-02-06 14:20:19.073973959 -0500
e90576
@@ -151,7 +151,7 @@ rpcbs_rmtcall(rpcvers_t rtype, rpcproc_t
e90576
 	rpcbs_rmtcalllist *rl;
e90576
 	struct netconfig *nconf;
e90576
 
e90576
-	if (rtype > RPCBVERS_STAT)
e90576
+	if (rtype >= RPCBVERS_STAT)
e90576
 		return;
e90576
 	for (rl = inf[rtype].rmtinfo; rl; rl = rl->next) {
e90576
 
e90576
diff -up rpcbind-1.2.5/src/rpcinfo.c.orig rpcbind-1.2.5/src/rpcinfo.c
175e7c
--- rpcbind-1.2.5/src/rpcinfo.c.orig	2020-02-06 14:19:34.193330210 -0500
175e7c
+++ rpcbind-1.2.5/src/rpcinfo.c	2020-02-06 14:20:19.073973959 -0500
e90576
@@ -693,11 +693,11 @@ reply_proc (res, who, nconf)
e90576
     }
e90576
   if (!(uaddr = taddr2uaddr (nconf, who)))
e90576
     {
e90576
-      uaddr = UNKNOWN;
e90576
+      printf ("%s\t%s\n", UNKNOWN, hostname);
e90576
+    } else {
e90576
+      printf ("%s\t%s\n", uaddr, hostname);
e90576
+      free ((char *) uaddr);
e90576
     }
e90576
-  printf ("%s\t%s\n", uaddr, hostname);
e90576
-  if (strcmp (uaddr, UNKNOWN))
e90576
-    free ((char *) uaddr);
e90576
   return (FALSE);
e90576
 }
e90576
 
e90576
diff -up rpcbind-1.2.5/src/util.c.orig rpcbind-1.2.5/src/util.c
175e7c
--- rpcbind-1.2.5/src/util.c.orig	2020-02-06 14:20:51.564439986 -0500
175e7c
+++ rpcbind-1.2.5/src/util.c	2020-02-06 14:20:39.994274027 -0500
175e7c
@@ -322,13 +322,20 @@ network_init()
e90576
 	/*
e90576
 	 * Now join the RPC ipv6 multicast group on all interfaces.
e90576
 	 */
e90576
-	if (getifaddrs(&ifp) < 0)
e90576
+	if (getifaddrs(&ifp) < 0) {
e90576
+		freeaddrinfo (res);
e90576
 		return;
e90576
-
e90576
+	}
e90576
 	mreq6.ipv6mr_interface = 0;
e90576
 	inet_pton(AF_INET6, RPCB_MULTICAST_ADDR, &mreq6.ipv6mr_multiaddr);
e90576
 
175e7c
 	s = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
175e7c
+	if (s < 0) {
175e7c
+	    if (debugging)
175e7c
+		    fprintf(stderr, "socket(AF_INET6) failed: %s\n", strerror(errno));
175e7c
+	    freeaddrinfo (res);
175e7c
+	    return;
175e7c
+	}
175e7c
 
175e7c
 	/*
175e7c
 	 * Loop through all interfaces. For each IPv6 multicast-capable
175e7c
@@ -351,9 +358,9 @@ network_init()
175e7c
 			if (debugging)
e90576
 				perror("setsockopt v6 multicast");
e90576
 	}
175e7c
+	close(s);
e90576
 #endif
e90576
-
e90576
-	/* close(s); */
e90576
+	freeaddrinfo (res);
e90576
 }
e90576
 
e90576
 struct sockaddr *