1
1

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.
Этот коммит содержится в:
Marc Hoersken 2015-03-23 23:17:31 +01:00
родитель 2d59b41daa
Коммит 3d3347c062

Просмотреть файл

@ -299,18 +299,12 @@ scp_recv(LIBSSH2_SESSION * session, const char *path, struct stat * sb)
"scp -%sf ", sb?"p":""); "scp -%sf ", sb?"p":"");
cmd_len = strlen((char *)session->scpRecv_command); 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[cmd_len] = '\0';
session->scpRecv_command_len - cmd_len); session->scpRecv_command_len = cmd_len + 1;
(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);
_libssh2_debug(session, LIBSSH2_TRACE_SCP, _libssh2_debug(session, LIBSSH2_TRACE_SCP,
"Opening channel for SCP receive"); "Opening channel for SCP receive");
@ -811,18 +805,12 @@ scp_send(LIBSSH2_SESSION * session, const char *path, int mode,
"scp -%st ", (mtime || atime)?"p":""); "scp -%st ", (mtime || atime)?"p":"");
cmd_len = strlen((char *)session->scpSend_command); 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[cmd_len] = '\0';
session->scpSend_command_len - cmd_len); session->scpSend_command_len = cmd_len + 1;
(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);
_libssh2_debug(session, LIBSSH2_TRACE_SCP, _libssh2_debug(session, LIBSSH2_TRACE_SCP,
"Opening channel for SCP send"); "Opening channel for SCP send");