In tcp_mmap.c, both child_thread() and main() allocate an EVP_MD_CTX
via EVP_MD_CTX_new() when integrity checking is enabled, but neither
function releases the context.  child_thread() misses the free in its
common cleanup block, and main() returns without freeing the context.

This results in a SHA256 context leak on every run that uses the
‑i (integrity) option.  Add the missing EVP_MD_CTX_free() calls to
the appropriate cleanup paths to fix the leak.

Fixes: 5c5945dc695c ("selftests/net: Add SHA256 computation over data sent in 
tcp_mmap")
Signed-off-by: Wang Yan <[email protected]>
---
 tools/testing/selftests/net/tcp_mmap.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/testing/selftests/net/tcp_mmap.c 
b/tools/testing/selftests/net/tcp_mmap.c
index 4fcce5150850..2544ae35d07a 100644
--- a/tools/testing/selftests/net/tcp_mmap.c
+++ b/tools/testing/selftests/net/tcp_mmap.c
@@ -313,6 +313,8 @@ void *child_thread(void *arg)
                                tcp_info_get_rcv_mss(fd));
        }
 error:
+       if (ctx)
+               EVP_MD_CTX_free(ctx);
        munmap(buffer, buffer_sz);
        close(fd);
        if (zflg)
@@ -606,6 +608,8 @@ int main(int argc, char *argv[])
                EVP_DigestFinal_ex(ctx, digest, &digest_len);
                send(fd, digest, (size_t)SHA256_DIGEST_LENGTH, 0);
        }
+       if (ctx)
+               EVP_MD_CTX_free(ctx);
        close(fd);
        munmap(buffer, buffer_sz);
        return 0;
-- 
2.25.1


Reply via email to