summaryrefslogtreecommitdiff
path: root/libpam/pam_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpam/pam_misc.c')
-rw-r--r--libpam/pam_misc.c12
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;
}