af56e49
From 819ef4f2037490b6aa2e870aea851b6364184090 Mon Sep 17 00:00:00 2001
af56e49
From: Kamil Dudka <kdudka@redhat.com>
af56e49
Date: Mon, 11 Sep 2017 21:13:45 +0200
af56e49
Subject: [PATCH] scp: do not NUL-terminate the command for remote exec (#208)
af56e49
af56e49
It breaks SCP download/upload from/to certain server implementations.
af56e49
af56e49
The bug does not manifest with OpenSSH, which silently drops the NUL
af56e49
byte (eventually with any garbage that follows the NUL byte) before
af56e49
executing it.
af56e49
af56e49
Bug: https://bugzilla.redhat.com/1489736
af56e49
---
af56e49
 src/scp.c | 8 ++++----
af56e49
 1 file changed, 4 insertions(+), 4 deletions(-)
af56e49
af56e49
diff --git a/src/scp.c b/src/scp.c
af56e49
index 22778dd..d1665a6 100644
af56e49
--- a/src/scp.c
af56e49
+++ b/src/scp.c
af56e49
@@ -303,8 +303,8 @@ scp_recv(LIBSSH2_SESSION * session, const char *path, libssh2_struct_stat * sb)
af56e49
                                   &session->scpRecv_command[cmd_len],
af56e49
                                   session->scpRecv_command_len - cmd_len);
af56e49
 
af56e49
-        session->scpRecv_command[cmd_len] = '\0';
af56e49
-        session->scpRecv_command_len = cmd_len + 1;
af56e49
+        /* the command to exec should _not_ be NUL-terminated */
af56e49
+        session->scpRecv_command_len = cmd_len;
af56e49
 
af56e49
         _libssh2_debug(session, LIBSSH2_TRACE_SCP,
af56e49
                        "Opening channel for SCP receive");
af56e49
@@ -845,8 +845,8 @@ scp_send(LIBSSH2_SESSION * session, const char *path, int mode,
af56e49
                                   &session->scpSend_command[cmd_len],
af56e49
                                   session->scpSend_command_len - cmd_len);
af56e49
 
af56e49
-        session->scpSend_command[cmd_len] = '\0';
af56e49
-        session->scpSend_command_len = cmd_len + 1;
af56e49
+        /* the command to exec should _not_ be NUL-terminated */
af56e49
+        session->scpSend_command_len = cmd_len;
af56e49
 
af56e49
         _libssh2_debug(session, LIBSSH2_TRACE_SCP,
af56e49
                        "Opening channel for SCP send");
af56e49
-- 
af56e49
2.9.5
af56e49