Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6979499 authored by Stefan Reif's avatar Stefan Reif Committed by Greg Kroah-Hartman
Browse files

staging: usbip: userspace: avoid memory leaks



Call freeaddrinfo when connect/listen fails.
Call usbip_host_driver_close on error.

Signed-off-by: default avatarStefan Reif <ke42caxa@cip.cs.fau.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b94b3a62
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -248,10 +248,10 @@ int usbip_net_tcp_connect(char *hostname, char *service)
		close(sockfd);
	}

	freeaddrinfo(res);

	if (!rp)
		return EAI_SYSTEM;

	freeaddrinfo(res);

	return sockfd;
}
+6 −1
Original line number Diff line number Diff line
@@ -448,6 +448,7 @@ static int do_standalone_mode(int daemonize)
	if (daemonize) {
		if (daemon(0, 0) < 0) {
			err("daemonizing failed: %s", strerror(errno));
			usbip_host_driver_close();
			return -1;
		}
		umask(0);
@@ -456,14 +457,18 @@ static int do_standalone_mode(int daemonize)
	set_signal();

	ai_head = do_getaddrinfo(NULL, PF_UNSPEC);
	if (!ai_head)
	if (!ai_head) {
		usbip_host_driver_close();
		return -1;
	}

	info("starting " PROGNAME " (%s)", usbip_version_string);

	nsockfd = listen_all_addrinfo(ai_head, sockfdlist);
	if (nsockfd <= 0) {
		err("failed to open a listening socket");
		freeaddrinfo(ai_head);
		usbip_host_driver_close();
		return -1;
	}
	fds = calloc(nsockfd, sizeof(struct pollfd));