summaryrefslogtreecommitdiff
path: root/sftp-client.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2022-01-08 07:37:32 +0000
committerDamien Miller <djm@mindrot.org>2022-01-08 18:38:50 +1100
commit12b457c2a42ff271e7967d9bedd068cebb048db9 (patch)
treeaa0b82c5a0349f142331b77fd366d3f06d27efd0 /sftp-client.c
parent63670d4e9030bcee490d5a9cce561373ac5b3b23 (diff)
downloadopenssh-git-12b457c2a42ff271e7967d9bedd068cebb048db9.tar.gz
upstream: use status error message to communicate ~user expansion
failures; provides better experience for scp in sftp mode, where ~user paths are more likely to be used; spotted jsg, feedback jsg & deraadt ok jsg & markus OpenBSD-Commit-ID: fc610ce00ca0cdc2ecdabbd49ce7cb82033f905f
Diffstat (limited to 'sftp-client.c')
-rw-r--r--sftp-client.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sftp-client.c b/sftp-client.c
index fa4a47cc..6ac293c2 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-client.c,v 1.159 2022/01/08 07:34:57 djm Exp $ */
+/* $OpenBSD: sftp-client.c,v 1.160 2022/01/08 07:37:32 djm Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
*
@@ -1009,10 +1009,14 @@ do_realpath_expand(struct sftp_conn *conn, const char *path, int expand)
if (type == SSH2_FXP_STATUS) {
u_int status;
+ char *errmsg;
- if ((r = sshbuf_get_u32(msg, &status)) != 0)
+ if ((r = sshbuf_get_u32(msg, &status)) != 0 ||
+ (r = sshbuf_get_cstring(msg, &errmsg, NULL)) != 0)
fatal_fr(r, "parse status");
- error("canonicalize %s: %s", path, fx2txt(status));
+ error("%s %s: %s", expand ? "expand" : "realpath",
+ path, *errmsg == '\0' ? fx2txt(status) : errmsg);
+ free(errmsg);
sshbuf_free(msg);
return NULL;
} else if (type != SSH2_FXP_NAME)