]> andersk Git - openssh.git/commitdiff
- markus@cvs.openbsd.org 2002/02/13 00:28:13
authordjm <djm>
Wed, 13 Feb 2002 03:05:00 +0000 (03:05 +0000)
committerdjm <djm>
Wed, 13 Feb 2002 03:05:00 +0000 (03:05 +0000)
     [sftp-server.c]
     handle SSH2_FILEXFER_ATTR_SIZE in SSH2_FXP_(F)SETSTAT; ok djm@

ChangeLog
sftp-server.c

index 15e06bd0752c185fce011391c23f5cf697d17da7..0fb5579735d19e61df96c629bce27938afc46cdf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,6 +24,9 @@
      [sftp-client.c]
      Let overlapped upload path handle servers which reorder ACKs. This may be
      permitted by the protocol spec; ok markus@
+   - markus@cvs.openbsd.org 2002/02/13 00:28:13
+     [sftp-server.c]
+     handle SSH2_FILEXFER_ATTR_SIZE in SSH2_FXP_(F)SETSTAT; ok djm@
 
 20020210
  - (djm) OpenBSD CVS Sync
index 6d6658614d9c1f29aa315658ade7e656f2159a30..117e6cc15711d1acbbdf6862d2df79be7f2ecccf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
+ * Copyright (c) 2000, 2001, 2002 Markus Friedl.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -22,7 +22,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #include "includes.h"
-RCSID("$OpenBSD: sftp-server.c,v 1.32 2001/12/29 21:56:01 stevesk Exp $");
+RCSID("$OpenBSD: sftp-server.c,v 1.33 2002/02/13 00:28:13 markus Exp $");
 
 #include "buffer.h"
 #include "bufaux.h"
@@ -589,6 +589,11 @@ process_setstat(void)
        name = get_string(NULL);
        a = get_attrib();
        TRACE("setstat id %d name %s", id, name);
+       if (a->flags & SSH2_FILEXFER_ATTR_SIZE) {
+               ret = truncate(name, a->size);
+               if (ret == -1)
+                       status = errno_to_portable(errno);
+       }
        if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) {
                ret = chmod(name, a->perm & 0777);
                if (ret == -1)
@@ -626,6 +631,11 @@ process_fsetstat(void)
        if (fd < 0 || name == NULL) {
                status = SSH2_FX_FAILURE;
        } else {
+               if (a->flags & SSH2_FILEXFER_ATTR_SIZE) {
+                       ret = ftruncate(fd, a->size);
+                       if (ret == -1)
+                               status = errno_to_portable(errno);
+               }
                if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) {
 #ifdef HAVE_FCHMOD
                        ret = fchmod(fd, a->perm & 0777);
This page took 0.051324 seconds and 5 git commands to generate.