[glib: 2/10] tests: Fix a leak in environment.c with undefined behaviour tests on




commit 12a4fcdbed1254293dcea166ad45bb9d28162dd8
Author: Philip Withnall <pwithnall endlessos org>
Date:   Fri Feb 18 02:01:12 2022 +0000

    tests: Fix a leak in environment.c with undefined behaviour tests on
    
    `g_environ_setenv()` and `g_environ_unsetenv()` were correctly returning
    `NULL` when their preconditions failed (as the test is supposed to be
    exercising). That overwrote the value of `env` without freeing it,
    resulting in a leak.
    
    Signed-off-by: Philip Withnall <pwithnall endlessos org>

 glib/tests/environment.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/glib/tests/environment.c b/glib/tests/environment.c
index f31bf1606..94135507f 100644
--- a/glib/tests/environment.c
+++ b/glib/tests/environment.c
@@ -180,25 +180,31 @@ test_environ_array (void)
 
   if (g_test_undefined ())
     {
+      gchar **undefined_env;
+
       g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                              "*assertion* != NULL*");
-      env = g_environ_setenv (env, NULL, "bar", TRUE);
+      undefined_env = g_environ_setenv (env, NULL, "bar", TRUE);
       g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
 
       g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                              "*assertion* == NULL*");
-      env = g_environ_setenv (env, "foo=fuz", "bar", TRUE);
+      undefined_env = g_environ_setenv (env, "foo=fuz", "bar", TRUE);
       g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
 
       g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                              "*assertion* != NULL*");
-      env = g_environ_setenv (env, "foo", NULL, TRUE);
+      undefined_env = g_environ_setenv (env, "foo", NULL, TRUE);
       g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
 
       g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                              "*assertion* != NULL*");
-      env = g_environ_unsetenv (env, NULL);
+      undefined_env = g_environ_unsetenv (env, NULL);
       g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
     }
 
   env = g_environ_setenv (env, "foo", "bar", TRUE);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]