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.
Этот коммит содержится в:
родитель
2d59b41daa
Коммит
3d3347c062
32
src/scp.c
32
src/scp.c
@ -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");
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user