diff options
Diffstat (limited to 'auth.c')
-rw-r--r-- | auth.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -368,7 +368,11 @@ secure_filename(FILE *f, const char *file, struct passwd *pw, | |||
368 | char *cp; | 368 | char *cp; |
369 | struct stat st; | 369 | struct stat st; |
370 | 370 | ||
371 | strlcpy(homedir, dirname(pw->pw_dir), sizeof(homedir)); | 371 | strlcpy(homedir, pw->pw_dir, sizeof(homedir)); |
372 | if ((cp = dirname(homedir)) == NULL) | ||
373 | strlcpy(homedir, "/", sizeof(homedir)); | ||
374 | else | ||
375 | memmove(homedir, cp, strlen(cp)); | ||
372 | 376 | ||
373 | if (realpath(file, buf) == NULL) { | 377 | if (realpath(file, buf) == NULL) { |
374 | snprintf(err, errlen, "realpath %s failed: %s", file, | 378 | snprintf(err, errlen, "realpath %s failed: %s", file, |