summaryrefslogtreecommitdiffstats
path: root/sftp-client.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2003-01-08 04:04:53 +0100
committerDamien Miller <djm@mindrot.org>2003-01-08 04:04:53 +0100
commit770b374a68fdb27de2c6314f154db57067875ff8 (patch)
treefbe074d4b2d41e5311154c3e088efe5b55103ae2 /sftp-client.c
parent - (djm) OpenBSD CVS Sync (diff)
downloadopenssh-770b374a68fdb27de2c6314f154db57067875ff8.tar.xz
openssh-770b374a68fdb27de2c6314f154db57067875ff8.zip
- djm@cvs.openbsd.org 2003/01/06 23:51:22
[sftp-client.c] Fix "get -p" download to not add user-write perm. mindrot bug #426 reported by gfernandez@livevault.com; ok markus@
Diffstat (limited to 'sftp-client.c')
-rw-r--r--sftp-client.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sftp-client.c b/sftp-client.c
index df9838648..bff37073c 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -28,7 +28,7 @@
/* XXX: copy between two remote sites */
#include "includes.h"
-RCSID("$OpenBSD: sftp-client.c,v 1.37 2002/11/21 23:03:51 deraadt Exp $");
+RCSID("$OpenBSD: sftp-client.c,v 1.38 2003/01/06 23:51:22 djm Exp $");
#include "openbsd-compat/sys-queue.h"
@@ -758,7 +758,7 @@ do_download(struct sftp_conn *conn, char *remote_path, char *local_path,
/* XXX: should we preserve set[ug]id? */
if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS)
- mode = S_IWRITE | (a->perm & 0777);
+ mode = a->perm & 0777;
else
mode = 0666;
@@ -793,7 +793,8 @@ do_download(struct sftp_conn *conn, char *remote_path, char *local_path,
return(-1);
}
- local_fd = open(local_path, O_WRONLY | O_CREAT | O_TRUNC, mode);
+ local_fd = open(local_path, O_WRONLY | O_CREAT | O_TRUNC,
+ mode | S_IWRITE);
if (local_fd == -1) {
error("Couldn't open local file \"%s\" for writing: %s",
local_path, strerror(errno));