From eec0c25f2a1704b871ceafff4c3cc96dd985b63b Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Wed, 11 Jul 2001 21:32:20 +1000 Subject: - (djm) dirname(3) may modify its argument on glibc and other systems. Patch from markus@, spotted by Tom Holroyd --- ChangeLog | 6 +++++- auth.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18c8ff63e..bfe383aef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +20010711 + - (djm) dirname(3) may modify its argument on glibc and other systems. + Patch from markus@, spotted by Tom Holroyd + 20010704 - OpenBSD CVS Sync - markus@cvs.openbsd.org 2001/06/25 08:25:41 @@ -5968,4 +5972,4 @@ - Wrote replacements for strlcpy and mkdtemp - Released 1.0pre1 -$Id: ChangeLog,v 1.1383 2001/07/05 04:27:20 tim Exp $ +$Id: ChangeLog,v 1.1384 2001/07/11 11:32:20 djm Exp $ diff --git a/auth.c b/auth.c index 84e0be761..436802342 100644 --- a/auth.c +++ b/auth.c @@ -368,7 +368,11 @@ secure_filename(FILE *f, const char *file, struct passwd *pw, char *cp; struct stat st; - strlcpy(homedir, dirname(pw->pw_dir), sizeof(homedir)); + strlcpy(homedir, pw->pw_dir, sizeof(homedir)); + if ((cp = dirname(homedir)) == NULL) + strlcpy(homedir, "/", sizeof(homedir)); + else + memmove(homedir, cp, strlen(cp)); if (realpath(file, buf) == NULL) { snprintf(err, errlen, "realpath %s failed: %s", file, -- cgit v1.2.3