diff options
author | Damien Miller <djm@mindrot.org> | 2008-06-29 22:46:35 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2008-06-29 22:46:35 +1000 |
commit | 9e720284fe63aa8e59983b880447ed4ae768387c (patch) | |
tree | 42a27c06c3ffd9bba4dafca6eb617059a85e9bad /sftp-server.c | |
parent | 007132a7c92e603ffb76862cedb28f3165582731 (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.c | 10 |
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); |