Resolve minor resource leaks reported by cppcheck in napi_id_helper.c
cppcheck output before this patch: tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak] tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak] tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak] tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak] tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak] tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]
cppcheck output after this patch: No resource leaks found
Signed-off-by: Malaya Kumar Rout malayarout91@gmail.com --- .../selftests/drivers/net/napi_id_helper.c | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c index eecd610c2109..5581d04e180f 100644 --- a/tools/testing/selftests/drivers/net/napi_id_helper.c +++ b/tools/testing/selftests/drivers/net/napi_id_helper.c @@ -18,8 +18,8 @@ int main(int argc, char *argv[]) socklen_t optlen; char buf[1024]; int opt = 1; - int server; - int client; + int server = -1; + int client = -1; int ret;
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); @@ -34,7 +34,7 @@ int main(int argc, char *argv[])
if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) { perror("setsockopt"); - return 1; + goto failure; }
address.sin_family = AF_INET; @@ -43,12 +43,12 @@ int main(int argc, char *argv[])
if (bind(server, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); - return 1; + goto failure; }
if (listen(server, 1) < 0) { perror("listen"); - return 1; + goto failure; }
ksft_ready(); @@ -56,7 +56,7 @@ int main(int argc, char *argv[]) client = accept(server, NULL, 0); if (client < 0) { perror("accept"); - return 1; + goto failure; }
optlen = sizeof(napi_id); @@ -64,7 +64,7 @@ int main(int argc, char *argv[]) &optlen); if (ret != 0) { perror("getsockopt"); - return 1; + goto failure; }
read(client, buf, 1024); @@ -73,11 +73,18 @@ int main(int argc, char *argv[])
if (napi_id == 0) { fprintf(stderr, "napi ID is 0\n"); - return 1; + goto failure; }
close(client); close(server);
return 0; + +failure: + if (client >= 0) + close(client); + if (server >= 0) + close(server); + return 1; }