[PATCH] tests/unit/test-util-sockets: fix mem-leak on error object

Matheus Tavares Bernardino posted 1 patch 5 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/518d94c7db20060b2a086cf55ee9bffab992a907.1748280011.git.matheus.bernardino@oss.qualcomm.com
tests/unit/test-util-sockets.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] tests/unit/test-util-sockets: fix mem-leak on error object
Posted by Matheus Tavares Bernardino 5 months, 3 weeks ago
The test fails with --enable-asan as the error struct is never freed.
In the case where the test expects a success but it fails, let's also
report the error for debugging (it will be freed internally).

Fixes 316e8ee8d6 ("util/qemu-sockets: Refactor inet_parse() to use QemuOpts")
Signed-off-by: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>
---
 tests/unit/test-util-sockets.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/unit/test-util-sockets.c b/tests/unit/test-util-sockets.c
index 8492f4d68f..ee66d727c3 100644
--- a/tests/unit/test-util-sockets.c
+++ b/tests/unit/test-util-sockets.c
@@ -341,8 +341,12 @@ static void inet_parse_test_helper(const char *str,
     int rc = inet_parse(&addr, str, &error);
 
     if (success) {
+        if (error) {
+            error_report_err(error);
+        }
         g_assert_cmpint(rc, ==, 0);
     } else {
+        error_free(error);
         g_assert_cmpint(rc, <, 0);
     }
     if (exp_addr != NULL) {
-- 
2.37.2
Re: [PATCH] tests/unit/test-util-sockets: fix mem-leak on error object
Posted by Daniel P. Berrangé 5 months, 2 weeks ago
On Mon, May 26, 2025 at 10:20:55AM -0700, Matheus Tavares Bernardino wrote:
> The test fails with --enable-asan as the error struct is never freed.
> In the case where the test expects a success but it fails, let's also
> report the error for debugging (it will be freed internally).
> 
> Fixes 316e8ee8d6 ("util/qemu-sockets: Refactor inet_parse() to use QemuOpts")
> Signed-off-by: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>
> ---
>  tests/unit/test-util-sockets.c | 4 ++++
>  1 file changed, 4 insertions(+)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] tests/unit/test-util-sockets: fix mem-leak on error object
Posted by Juraj Marcin 5 months, 3 weeks ago
Hi Matheus

On 2025-05-26 10:20, Matheus Tavares Bernardino wrote:
> The test fails with --enable-asan as the error struct is never freed.
> In the case where the test expects a success but it fails, let's also
> report the error for debugging (it will be freed internally).

Oh, nice catch. Thanks!

Reviewed-by: Juraj Marcin <jmarcin@redhat.com>

> 
> Fixes 316e8ee8d6 ("util/qemu-sockets: Refactor inet_parse() to use QemuOpts")
> Signed-off-by: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>
> ---
>  tests/unit/test-util-sockets.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/tests/unit/test-util-sockets.c b/tests/unit/test-util-sockets.c
> index 8492f4d68f..ee66d727c3 100644
> --- a/tests/unit/test-util-sockets.c
> +++ b/tests/unit/test-util-sockets.c
> @@ -341,8 +341,12 @@ static void inet_parse_test_helper(const char *str,
>      int rc = inet_parse(&addr, str, &error);
>  
>      if (success) {
> +        if (error) {
> +            error_report_err(error);
> +        }
>          g_assert_cmpint(rc, ==, 0);
>      } else {
> +        error_free(error);
>          g_assert_cmpint(rc, <, 0);
>      }
>      if (exp_addr != NULL) {
> -- 
> 2.37.2
>