scp.c: improved command length calculation
Reduced number of calls to strlen, because shell_quotearg already
returns the length of the resulting string (e.q. quoted path)
which we can add to the existing and known cmd_len.
Removed obsolete call to memset again, because we can put a final
NULL-byte at the end of the string using the calculated length.
diff --git a/src/scp.c b/src/scp.c
index d2cbf95..c56f46c 100644
--- a/src/scp.c
+++ b/src/scp.c
@@ -299,18 +299,12 @@
"scp -%sf ", sb?"p":"");
cmd_len = strlen((char *)session->scpRecv_command);
+ cmd_len += shell_quotearg(path,
+ &session->scpRecv_command[cmd_len],
+ session->scpRecv_command_len - cmd_len);
- memset(&session->scpRecv_command[cmd_len], 0,
- session->scpRecv_command_len - cmd_len);
-
- (void)shell_quotearg(path,
- &session->scpRecv_command[cmd_len],
- session->scpRecv_command_len - cmd_len);
-
- session->scpRecv_command[session->scpRecv_command_len - 1] = '\0';
-
- session->scpRecv_command_len =
- strlen((char *)session->scpRecv_command);
+ session->scpRecv_command[cmd_len] = '\0';
+ session->scpRecv_command_len = cmd_len + 1;
_libssh2_debug(session, LIBSSH2_TRACE_SCP,
"Opening channel for SCP receive");
@@ -811,18 +805,12 @@
"scp -%st ", (mtime || atime)?"p":"");
cmd_len = strlen((char *)session->scpSend_command);
+ cmd_len += shell_quotearg(path,
+ &session->scpSend_command[cmd_len],
+ session->scpSend_command_len - cmd_len);
- memset(&session->scpSend_command[cmd_len], 0,
- session->scpSend_command_len - cmd_len);
-
- (void)shell_quotearg(path,
- &session->scpSend_command[cmd_len],
- session->scpSend_command_len - cmd_len);
-
- session->scpSend_command[session->scpSend_command_len - 1] = '\0';
-
- session->scpSend_command_len =
- strlen((char *)session->scpSend_command);
+ session->scpSend_command[cmd_len] = '\0';
+ session->scpSend_command_len = cmd_len + 1;
_libssh2_debug(session, LIBSSH2_TRACE_SCP,
"Opening channel for SCP send");