]> granicus.if.org Git - shadow/commitdiff
Fix segfaults
authorNicolas François <nicolas.francois@centraliens.net>
Fri, 2 Aug 2013 18:24:20 +0000 (20:24 +0200)
committerNicolas François <nicolas.francois@centraliens.net>
Fri, 2 Aug 2013 18:24:20 +0000 (20:24 +0200)
* libmisc/setupenv.c: xstrdup the static char* temp_pw_dir /
temp_pw_shell. That way we can continue to use pw_free() without
segving. Thanks to Serge Hallyn for the patch.

ChangeLog
libmisc/setupenv.c

index af839cdf8208905c08206a32e3962403eece874e..b7a1e142f9fda04e75430e7219e5ebb517384735 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-08-02  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * libmisc/setupenv.c: xstrdup the static char* temp_pw_dir /
+       temp_pw_shell. That way we can continue to use pw_free() without
+       segving. Thanks to Serge Hallyn for the patch.
+
 2013-08-01  Yuri Kozlov  <yuray@komyakino.ru>
 
         * po/ru.po: completed translation
index 992d3b817a40c321df49ec2f4cc7f8bf7cd966ac..28891ae12706a0ef6455147805719f1361e50dce 100644 (file)
@@ -228,7 +228,7 @@ void setup_env (struct passwd *info)
                        exit (EXIT_FAILURE);
                }
                (void) puts (_("No directory, logging in with HOME=/"));
-               info->pw_dir = strdup(temp_pw_dir);
+               info->pw_dir = xstrdup (temp_pw_dir);
        }
 
        /*
@@ -244,7 +244,7 @@ void setup_env (struct passwd *info)
        if ((NULL == info->pw_shell) || ('\0' == *info->pw_shell)) {
                static char temp_pw_shell[] = SHELL;
 
-               info->pw_shell = temp_pw_shell;
+               info->pw_shell = xstrdup (temp_pw_shell);
        }
 
        addenv ("SHELL", info->pw_shell);