summaryrefslogtreecommitdiff
diff options
authorKT-lcz <54447789+kt-lcz@users.noreply.github.com>2024-12-11 15:50:34 +0800
committerRobert Ancell <robert.ancell@gmail.com>2024-12-12 16:29:47 +1300
commitf043bfd81e10a3499e865aafd99781a4df854784 (patch)
tree562c2e737bced45a100a65dce6e94a8016e5e17c
parent3abc9fbc0d9d368c3ae61b2ae25b711a07191797 (diff)
fix: fix some memory leak in session_child_run
The memory requested using g_strdup_printf is not released. Use g_autofree to release the memory.
-rw-r--r--src/session-child.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/session-child.c b/src/session-child.c
index 4e04137d..42831e2f 100644
--- a/src/session-child.c
+++ b/src/session-child.c
@@ -398,10 +398,14 @@ session_child_run (int argc, char **argv)
{
/* Set POSIX variables */
pam_putenv (pam_handle, "PATH=/usr/local/bin:/usr/bin:/bin");
- pam_putenv (pam_handle, g_strdup_printf ("USER=%s", username));
- pam_putenv (pam_handle, g_strdup_printf ("LOGNAME=%s", username));
- pam_putenv (pam_handle, g_strdup_printf ("HOME=%s", user_get_home_directory (user)));
- pam_putenv (pam_handle, g_strdup_printf ("SHELL=%s", user_get_shell (user)));
+ g_autofree gchar* user_env = g_strdup_printf ("USER=%s", username);
+ pam_putenv (pam_handle, user_env);
+ g_autofree gchar* logname_env = g_strdup_printf ("LOGNAME=%s", username);
+ pam_putenv (pam_handle, logname_env);
+ g_autofree gchar* home_env = g_strdup_printf ("HOME=%s",user_get_home_directory (user));
+ pam_putenv (pam_handle, home_env);
+ g_autofree gchar* shell_env = g_strdup_printf ("SHELL=%s", user_get_shell (user));
+ pam_putenv (pam_handle, shell_env);
/* Let the greeter and user session inherit the system default locale */
static const gchar * const locale_var_names[] = {