diff --git a/examples/server/server.c b/examples/server/server.c index 82f024d..8985fcd 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -148,12 +148,12 @@ static THREAD_RETURN WOLFSSH_THREAD server_worker(void* vArgs) #if defined(WOLFSSH_SCP) && defined(NO_FILESYSTEM) ScpBuffer scpBufferRecv, scpBufferSend; - byte fileBuffer[1024]; + byte fileBuffer[49000]; byte fileTmp[] = "wolfSSH SCP buffer file"; WMEMSET(&scpBufferRecv, 0, sizeof(ScpBuffer)); scpBufferRecv.buffer = fileBuffer; - scpBufferRecv.bufferSz = 1024; + scpBufferRecv.bufferSz = sizeof(fileBuffer); wolfSSH_SetScpRecvCtx(threadCtx->ssh, (void*)&scpBufferRecv); /* make buffer file to send if asked */ diff --git a/src/wolfscp.c b/src/wolfscp.c index f852c9d..de57595 100644 --- a/src/wolfscp.c +++ b/src/wolfscp.c @@ -1043,6 +1043,11 @@ static int ScpCheckForRename(WOLFSSH* ssh, int cmdSz) if (idx == 4) { /* case of 4 for drive letter plus ":\" + 1 */ idx--; } +#else + /* allow placing file at base address ':/' */ + if (sz == 1 && buf[0] == WS_DELIM) { + idx--; + } #endif if (idx > cmdSz || idx > sz) { return WS_BUFFER_E; @@ -1057,7 +1062,7 @@ static int ScpCheckForRename(WOLFSSH* ssh, int cmdSz) ssh->scpFileName = (char*)WMALLOC(sz + 1, ssh->ctx->heap, DYNTYPE_STRING); if (ssh->scpFileName == NULL) { - WLOG(WS_LOG_DEBUG, scpError, "memory error creaating file name", + WLOG(WS_LOG_DEBUG, scpError, "memory error creating file name", WS_MEMORY_E); ssh->scpBasePath = NULL; return WS_MEMORY_E; @@ -2533,6 +2538,7 @@ int wsScpRecvCallback(WOLFSSH* ssh, int state, const char* basePath, sz = (bufSz < recvBuffer->bufferSz - recvBuffer->idx) ? bufSz : recvBuffer->bufferSz - recvBuffer->idx; WMEMCPY(recvBuffer->buffer + recvBuffer->idx, buf, sz); + recvBuffer->idx += sz; recvBuffer->fileSz += sz; if (recvBuffer->status) { if (recvBuffer->status(ssh, recvBuffer->name,