]> www.infradead.org Git - users/hch/misc.git/commitdiff
selftests: net: avoid memory leak
authorZongmin Zhou <zhouzongmin@kylinos.cn>
Mon, 1 Sep 2025 05:45:57 +0000 (13:45 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 2 Sep 2025 23:55:00 +0000 (16:55 -0700)
The buffer be used without free,fix it to avoid memory leak.

Signed-off-by: Zongmin Zhou <zhouzongmin@kylinos.cn>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250901054557.32811-1-min_halo@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/cmsg_sender.c

index a825e628aee73504d25867be2dda00e89c30e16c..ded9b925865ec1ca23df7e198a18cd2420144743 100644 (file)
@@ -491,7 +491,8 @@ int main(int argc, char *argv[])
        if (err) {
                fprintf(stderr, "Can't resolve address [%s]:%s\n",
                        opt.host, opt.service);
-               return ERN_SOCK_CREATE;
+               err = ERN_SOCK_CREATE;
+               goto err_free_buff;
        }
 
        if (ai->ai_family == AF_INET6 && opt.sock.proto == IPPROTO_ICMP)
@@ -500,8 +501,8 @@ int main(int argc, char *argv[])
        fd = socket(ai->ai_family, opt.sock.type, opt.sock.proto);
        if (fd < 0) {
                fprintf(stderr, "Can't open socket: %s\n", strerror(errno));
-               freeaddrinfo(ai);
-               return ERN_RESOLVE;
+               err = ERN_RESOLVE;
+               goto err_free_info;
        }
 
        if (opt.sock.proto == IPPROTO_ICMP) {
@@ -574,6 +575,9 @@ int main(int argc, char *argv[])
 
 err_out:
        close(fd);
+err_free_info:
        freeaddrinfo(ai);
+err_free_buff:
+       free(buf);
        return err;
 }