summaryrefslogtreecommitdiff
path: root/sftp-server.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2008-06-29 22:46:35 +1000
committerDamien Miller <djm@mindrot.org>2008-06-29 22:46:35 +1000
commit9e720284fe63aa8e59983b880447ed4ae768387c (patch)
tree42a27c06c3ffd9bba4dafca6eb617059a85e9bad /sftp-server.c
parent007132a7c92e603ffb76862cedb28f3165582731 (diff)
- djm@cvs.openbsd.org 2008/06/26 06:10:09
[sftp-client.c sftp-server.c] allow the sftp chmod(2)-equivalent operation to set set[ug]id/sticky bits. Note that this only affects explicit setting of modes (e.g. via sftp(1)'s chmod command) and not file transfers. (bz#1310) ok deraadt@ at c2k8
Diffstat (limited to 'sftp-server.c')
-rw-r--r--sftp-server.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sftp-server.c b/sftp-server.c
index 4022b93b6..a4c4f168f 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-server.c,v 1.83 2008/06/09 13:02:39 dtucker Exp $ */ 1/* $OpenBSD: sftp-server.c,v 1.84 2008/06/26 06:10:09 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved.
4 * 4 *
@@ -763,7 +763,7 @@ process_setstat(void)
763 } 763 }
764 if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) { 764 if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) {
765 logit("set \"%s\" mode %04o", name, a->perm); 765 logit("set \"%s\" mode %04o", name, a->perm);
766 ret = chmod(name, a->perm & 0777); 766 ret = chmod(name, a->perm & 07777);
767 if (ret == -1) 767 if (ret == -1)
768 status = errno_to_portable(errno); 768 status = errno_to_portable(errno);
769 } 769 }
@@ -817,9 +817,9 @@ process_fsetstat(void)
817 if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) { 817 if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) {
818 logit("set \"%s\" mode %04o", name, a->perm); 818 logit("set \"%s\" mode %04o", name, a->perm);
819#ifdef HAVE_FCHMOD 819#ifdef HAVE_FCHMOD
820 ret = fchmod(fd, a->perm & 0777); 820 ret = fchmod(fd, a->perm & 07777);
821#else 821#else
822 ret = chmod(name, a->perm & 0777); 822 ret = chmod(name, a->perm & 07777);
823#endif 823#endif
824 if (ret == -1) 824 if (ret == -1)
825 status = errno_to_portable(errno); 825 status = errno_to_portable(errno);
@@ -970,7 +970,7 @@ process_mkdir(void)
970 name = get_string(NULL); 970 name = get_string(NULL);
971 a = get_attrib(); 971 a = get_attrib();
972 mode = (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) ? 972 mode = (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) ?
973 a->perm & 0777 : 0777; 973 a->perm & 07777 : 0777;
974 debug3("request %u: mkdir", id); 974 debug3("request %u: mkdir", id);
975 logit("mkdir name \"%s\" mode 0%o", name, mode); 975 logit("mkdir name \"%s\" mode 0%o", name, mode);
976 ret = mkdir(name, mode); 976 ret = mkdir(name, mode);