diff options
author | djm@openbsd.org <djm@openbsd.org> | 2024-04-30 08:23:51 +0200 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2024-04-30 08:24:22 +0200 |
commit | 385ecb31e147dfea59c1c488a1d2011d3867e60e (patch) | |
tree | 3a63a54c069f8054786e2e039b5461674a53388b /sftp-server.c | |
parent | upstream: flush stdout after writing "sftp>" prompt when not using (diff) | |
download | openssh-385ecb31e147dfea59c1c488a1d2011d3867e60e.tar.xz openssh-385ecb31e147dfea59c1c488a1d2011d3867e60e.zip |
upstream: fix home-directory extension implementation, it always
returned the current user's home directory contrary to the spec.
Patch from Jakub Jelen via GHPR477
OpenBSD-Commit-ID: 5afd775eab7f9cbe222d7fbae4c793de6c3b3d28
Diffstat (limited to 'sftp-server.c')
-rw-r--r-- | sftp-server.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sftp-server.c b/sftp-server.c index 0466a0f7f..a4abb9f7c 100644 --- a/sftp-server.c +++ b/sftp-server.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-server.c,v 1.147 2023/04/12 08:53:54 jsg Exp $ */ +/* $OpenBSD: sftp-server.c,v 1.148 2024/04/30 06:23:51 djm Exp $ */ /* * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. * @@ -1706,14 +1706,16 @@ process_extended_home_directory(u_int32_t id) fatal_fr(r, "parse"); debug3("request %u: home-directory \"%s\"", id, username); - if ((user_pw = getpwnam(username)) == NULL) { + if (username[0] == '\0') { + user_pw = pw; + } else if ((user_pw = getpwnam(username)) == NULL) { send_status(id, SSH2_FX_FAILURE); goto out; } - verbose("home-directory \"%s\"", pw->pw_dir); + verbose("home-directory \"%s\"", user_pw->pw_dir); attrib_clear(&s.attrib); - s.name = s.long_name = pw->pw_dir; + s.name = s.long_name = user_pw->pw_dir; send_names(id, 1, &s); out: free(username); |