mirror of https://github.com/wolfSSL/wolfssh.git
commit
cea5d5664e
|
@ -1074,15 +1074,24 @@ static int ParseBasePathHelper(WOLFSSH* ssh, int cmdSz)
|
|||
}
|
||||
|
||||
sz = sz - idx; /* size of file name */
|
||||
ssh->scpFileName = (char*)WMALLOC(sz + 1, ssh->ctx->heap,
|
||||
if (ssh->scpFileNameSz < (word32)sz || ssh->scpFileName == NULL) {
|
||||
if (ssh->scpFileName != NULL) {
|
||||
WFREE(ssh->scpFileName, ssh->ctx->heap, DYNTYPE_STRING);
|
||||
ssh->scpFileNameSz = 0;
|
||||
}
|
||||
ssh->scpFileName = (char*)WMALLOC(sz + 1, ssh->ctx->heap,
|
||||
DYNTYPE_STRING);
|
||||
if (ssh->scpFileName == NULL) {
|
||||
WLOG(WS_LOG_DEBUG, "scp: memory error creaating file name\n");
|
||||
ssh->scpBasePath = NULL;
|
||||
return WS_MEMORY_E;
|
||||
if (ssh->scpFileName == NULL) {
|
||||
WLOG(WS_LOG_DEBUG, "scp: memory error creaating file name\n");
|
||||
ssh->scpBasePath = NULL;
|
||||
return WS_MEMORY_E;
|
||||
}
|
||||
}
|
||||
|
||||
ssh->scpFileReName = ssh->scpFileName;
|
||||
WSTRNCPY(ssh->scpFileName, ssh->scpBasePath + idx, sz);
|
||||
ssh->scpFileName[sz] = '\0';
|
||||
ssh->scpFileNameSz = sz;
|
||||
*((char*)ssh->scpBasePath + idx) = '\0';
|
||||
}
|
||||
else {
|
||||
|
@ -1235,9 +1244,12 @@ int ReceiveScpMessage(WOLFSSH* ssh)
|
|||
if ((ret = GetScpFileSize(ssh, buf, sz, &idx)) != WS_SUCCESS)
|
||||
break;
|
||||
|
||||
if (ssh->scpFileName == NULL) {
|
||||
if (ssh->scpFileReName == NULL) {
|
||||
ret = GetScpFileName(ssh, buf, sz, &idx);
|
||||
}
|
||||
else {
|
||||
ssh->scpFileReName = NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
|
|
|
@ -296,6 +296,7 @@ struct WOLFSSH {
|
|||
int scpFileMode; /* mode/permission of file/dir */
|
||||
word32 scpFileSz; /* total size of file/dir being transferred */
|
||||
char* scpFileName; /* file name, dynamic */
|
||||
char* scpFileReName; /* file rename case, points to scpFileName */
|
||||
word32 scpFileNameSz; /* length of fileName, not including \0 */
|
||||
byte scpTimestamp; /* did peer request timestamp? {0:1} */
|
||||
word64 scpATime; /* scp file access time, secs since epoch */
|
||||
|
|
Loading…
Reference in New Issue