aboutsummaryrefslogtreecommitdiff
path: root/libssh/sftpserver.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-27 11:41:08 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-27 11:41:08 +0000
commit83142315daf214176e7f635574ac9f7a012a2469 (patch)
tree917c47061c889133ff36c1a67067bb846656c89f /libssh/sftpserver.c
parentdb79fff00d861a14e8ef08ed34ba403c84775b9c (diff)
downloadlibssh-83142315daf214176e7f635574ac9f7a012a2469.tar.gz
libssh-83142315daf214176e7f635574ac9f7a012a2469.tar.xz
libssh-83142315daf214176e7f635574ac9f7a012a2469.zip
Improve sftp_reply_handle.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@623 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/sftpserver.c')
-rw-r--r--libssh/sftpserver.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/libssh/sftpserver.c b/libssh/sftpserver.c
index 07f432a9..a60d1b6a 100644
--- a/libssh/sftpserver.c
+++ b/libssh/sftpserver.c
@@ -257,13 +257,22 @@ int sftp_reply_name(SFTP_CLIENT_MESSAGE *msg, const char *name,
}
int sftp_reply_handle(SFTP_CLIENT_MESSAGE *msg, STRING *handle){
- BUFFER *out=buffer_new();
- int r;
- buffer_add_u32(out,msg->id);
- buffer_add_ssh_string(out,handle);
- r=sftp_packet_write(msg->sftp,SSH_FXP_HANDLE,out);
+ BUFFER *out;
+
+ out = buffer_new();
+ if (out == NULL) {
+ return -1;
+ }
+
+ if (buffer_add_u32(out, msg->id) < 0 ||
+ buffer_add_ssh_string(out, handle) < 0 ||
+ sftp_packet_write(msg->sftp, SSH_FXP_HANDLE, out) < 0) {
buffer_free(out);
- return r<0;
+ return -1;
+ }
+ buffer_free(out);
+
+ return 0;
}
int sftp_reply_attr(SFTP_CLIENT_MESSAGE *msg, SFTP_ATTRIBUTES *attr){