diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2014-01-24 23:53:09 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2014-01-27 13:41:26 +0000 |
commit | 154c00e1a480d2bac7e8aba3b13888eb909f8e7f (patch) | |
tree | bcfb6b8d16b22566f4cc492e028933d6e684a9b6 /modules/pam_unix/pam_unix_passwd.c | |
parent | 57a1e2b274d0a6376d92ada9926e5c5741e7da20 (diff) | |
download | pam-154c00e1a480d2bac7e8aba3b13888eb909f8e7f.tar.gz pam-154c00e1a480d2bac7e8aba3b13888eb909f8e7f.tar.bz2 pam-154c00e1a480d2bac7e8aba3b13888eb909f8e7f.zip |
Fix gratuitous use of strdup and x_strdup
There is no need to copy strings passed as arguments to execve,
the only potentially noticeable effect of using strdup/x_strdup
would be a malformed argument list in case of memory allocation error.
Also, x_strdup, being a thin wrapper around strdup, is of no benefit
when its argument is known to be non-NULL, and should not be used in
such cases.
* modules/pam_cracklib/pam_cracklib.c (password_check): Use strdup
instead of x_strdup, the latter is of no benefit in this case.
* modules/pam_ftp/pam_ftp.c (lookup): Likewise.
* modules/pam_userdb/pam_userdb.c (user_lookup): Likewise.
* modules/pam_userdb/pam_userdb.h (x_strdup): Remove.
* modules/pam_mkhomedir/pam_mkhomedir.c (create_homedir): Do not use
x_strdup for strings passed as arguments to execve.
* modules/pam_unix/pam_unix_acct.c (_unix_run_verify_binary): Likewise.
* modules/pam_unix/pam_unix_passwd.c (_unix_run_update_binary): Likewise.
* modules/pam_unix/support.c (_unix_run_helper_binary): Likewise.
(_unix_verify_password): Use strdup instead of x_strdup, the latter
is of no benefit in this case.
* modules/pam_xauth/pam_xauth.c (run_coprocess): Do not use strdup for
strings passed as arguments to execv.
Diffstat (limited to 'modules/pam_unix/pam_unix_passwd.c')
-rw-r--r-- | modules/pam_unix/pam_unix_passwd.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/modules/pam_unix/pam_unix_passwd.c b/modules/pam_unix/pam_unix_passwd.c index 0cfc0f4d..5f3a3db3 100644 --- a/modules/pam_unix/pam_unix_passwd.c +++ b/modules/pam_unix/pam_unix_passwd.c @@ -204,7 +204,7 @@ static int _unix_run_update_binary(pam_handle_t *pamh, unsigned int ctrl, const int i=0; struct rlimit rlim; static char *envp[] = { NULL }; - char *args[] = { NULL, NULL, NULL, NULL, NULL, NULL }; + const char *args[] = { NULL, NULL, NULL, NULL, NULL, NULL }; char buffer[16]; /* XXX - should really tidy up PAM here too */ @@ -222,18 +222,18 @@ static int _unix_run_update_binary(pam_handle_t *pamh, unsigned int ctrl, const } /* exec binary helper */ - args[0] = x_strdup(UPDATE_HELPER); - args[1] = x_strdup(user); - args[2] = x_strdup("update"); + args[0] = UPDATE_HELPER; + args[1] = user; + args[2] = "update"; if (on(UNIX_SHADOW, ctrl)) - args[3] = x_strdup("1"); + args[3] = "1"; else - args[3] = x_strdup("0"); + args[3] = "0"; snprintf(buffer, sizeof(buffer), "%d", remember); - args[4] = x_strdup(buffer); + args[4] = buffer; - execve(UPDATE_HELPER, args, envp); + execve(UPDATE_HELPER, (char *const *) args, envp); /* should not get here: exit with error */ D(("helper binary is not available")); |