/* $FreeBSD: src/contrib/libpam/libpam_misc/xstrdup.c,v 1.2.6.2 2001/06/11 15:28:15 markm Exp $ */ /* $DragonFly: src/contrib/libpam/libpam_misc/Attic/xstrdup.c,v 1.2 2003/06/17 04:24:03 dillon Exp $ */ /* $Header: /home/morgan/pam/Linux-PAM-0.53/libpam_misc/RCS/xstrdup.c,v 1.4 1996/11/10 20:10:56 morgan Exp $ */ /* * $Log: xstrdup.c,v $ * Revision 1.4 1996/11/10 20:10:56 morgan * modification for stack paranoia * */ #include #include /* * Safe duplication of character strings. "Paranoid"; don't leave * evidence of old token around for later stack analysis. */ char *xstrdup(const char *x) { register char *new=NULL; if (x != NULL) { register int i; for (i=0; x[i]; ++i); /* length of string */ if ((new = malloc(++i)) == NULL) { i = 0; } else { while (i-- > 0) { new[i] = x[i]; } } x = NULL; } return new; /* return the duplicate or NULL on error */ }