diff options
Diffstat (limited to 'libpam')
-rw-r--r-- | libpam/pam_misc.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/libpam/pam_misc.c b/libpam/pam_misc.c index 78e317f7..770c9cce 100644 --- a/libpam/pam_misc.c +++ b/libpam/pam_misc.c @@ -122,16 +122,14 @@ char *_pam_strdup(const char *x) register char *new=NULL; if (x != NULL) { - register int i; + register int len; - for (i=0; x[i]; ++i); /* length of string */ - if ((new = malloc(++i)) == NULL) { - i = 0; + len = strlen (x) + 1; /* length of string including NUL */ + if ((new = malloc(len)) == NULL) { + len = 0; pam_syslog(NULL, LOG_CRIT, "_pam_strdup: failed to get memory"); } else { - while (i-- > 0) { - new[i] = x[i]; - } + strcpy (new, x); } x = NULL; } |