Skip to content

Commit

Permalink
scp.c: improved command length calculation
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mback2k committed Mar 23, 2015
1 parent 2d59b41 commit 3d3347c
Showing 1 changed file with 10 additions and 22 deletions.
32 changes: 10 additions & 22 deletions src/scp.c
Expand Up @@ -299,18 +299,12 @@ scp_recv(LIBSSH2_SESSION * session, const char *path, struct stat * sb)
"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");
Expand Down Expand Up @@ -811,18 +805,12 @@ scp_send(LIBSSH2_SESSION * session, const char *path, int mode,
"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");
Expand Down

0 comments on commit 3d3347c

Please sign in to comment.