]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
tests: tcp_connect: avoid resource leak on error path
authorDaiki Ueno <ueno@gnu.org>
Fri, 28 Jan 2022 06:55:25 +0000 (07:55 +0100)
committerDaiki Ueno <ueno@gnu.org>
Fri, 28 Jan 2022 11:53:31 +0000 (12:53 +0100)
Signed-off-by: Daiki Ueno <ueno@gnu.org>
tests/utils.c

index b6899e2603ae2d798109e6c21b9b65495b72f9d7..dc7c3341baf3884e5732be2275181134aa344c2a 100644 (file)
@@ -332,17 +332,22 @@ void delete_temp_files(void)
 int tcp_connect(const char* addr, unsigned port)
 {
        int sock;
-       struct sockaddr_in sa = {0};
+       struct sockaddr_in sa;
        memset(&sa, 0, sizeof(sa));
        sock = socket(AF_INET, SOCK_STREAM, 0);
-       if (sock == -1)
-           return -1;
+       if (sock == -1) {
+               return -1;
+       }
        sa.sin_family = AF_INET;
        sa.sin_port = htons(port);
-       if (inet_pton(AF_INET, addr, &sa.sin_addr) != 1)
-           return -1;
-       if (connect(sock, (struct sockaddr*) &sa, sizeof(sa)) != 0)
-           return -1;
+       if (inet_pton(AF_INET, addr, &sa.sin_addr) != 1) {
+               close(sock);
+               return -1;
+       }
+       if (connect(sock, (struct sockaddr*) &sa, sizeof(sa)) != 0) {
+               close(sock);
+               return -1;
+       }
        return sock;
 }
 #endif