mirror of https://github.com/wolfSSL/wolfssh.git
allow scp to '/' and increase file buffer in example server
parent
c2a2c03095
commit
44d18953ed
|
@ -148,12 +148,12 @@ static THREAD_RETURN WOLFSSH_THREAD server_worker(void* vArgs)
|
||||||
|
|
||||||
#if defined(WOLFSSH_SCP) && defined(NO_FILESYSTEM)
|
#if defined(WOLFSSH_SCP) && defined(NO_FILESYSTEM)
|
||||||
ScpBuffer scpBufferRecv, scpBufferSend;
|
ScpBuffer scpBufferRecv, scpBufferSend;
|
||||||
byte fileBuffer[1024];
|
byte fileBuffer[49000];
|
||||||
byte fileTmp[] = "wolfSSH SCP buffer file";
|
byte fileTmp[] = "wolfSSH SCP buffer file";
|
||||||
|
|
||||||
WMEMSET(&scpBufferRecv, 0, sizeof(ScpBuffer));
|
WMEMSET(&scpBufferRecv, 0, sizeof(ScpBuffer));
|
||||||
scpBufferRecv.buffer = fileBuffer;
|
scpBufferRecv.buffer = fileBuffer;
|
||||||
scpBufferRecv.bufferSz = 1024;
|
scpBufferRecv.bufferSz = sizeof(fileBuffer);
|
||||||
wolfSSH_SetScpRecvCtx(threadCtx->ssh, (void*)&scpBufferRecv);
|
wolfSSH_SetScpRecvCtx(threadCtx->ssh, (void*)&scpBufferRecv);
|
||||||
|
|
||||||
/* make buffer file to send if asked */
|
/* make buffer file to send if asked */
|
||||||
|
|
|
@ -1043,6 +1043,11 @@ static int ScpCheckForRename(WOLFSSH* ssh, int cmdSz)
|
||||||
if (idx == 4) { /* case of 4 for drive letter plus ":\" + 1 */
|
if (idx == 4) { /* case of 4 for drive letter plus ":\" + 1 */
|
||||||
idx--;
|
idx--;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
/* allow placing file at base address ':/' */
|
||||||
|
if (sz == 1 && buf[0] == WS_DELIM) {
|
||||||
|
idx--;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
if (idx > cmdSz || idx > sz) {
|
if (idx > cmdSz || idx > sz) {
|
||||||
return WS_BUFFER_E;
|
return WS_BUFFER_E;
|
||||||
|
@ -1057,7 +1062,7 @@ static int ScpCheckForRename(WOLFSSH* ssh, int cmdSz)
|
||||||
ssh->scpFileName = (char*)WMALLOC(sz + 1, ssh->ctx->heap,
|
ssh->scpFileName = (char*)WMALLOC(sz + 1, ssh->ctx->heap,
|
||||||
DYNTYPE_STRING);
|
DYNTYPE_STRING);
|
||||||
if (ssh->scpFileName == NULL) {
|
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);
|
WS_MEMORY_E);
|
||||||
ssh->scpBasePath = NULL;
|
ssh->scpBasePath = NULL;
|
||||||
return WS_MEMORY_E;
|
return WS_MEMORY_E;
|
||||||
|
@ -2533,6 +2538,7 @@ int wsScpRecvCallback(WOLFSSH* ssh, int state, const char* basePath,
|
||||||
sz = (bufSz < recvBuffer->bufferSz - recvBuffer->idx) ?
|
sz = (bufSz < recvBuffer->bufferSz - recvBuffer->idx) ?
|
||||||
bufSz : recvBuffer->bufferSz - recvBuffer->idx;
|
bufSz : recvBuffer->bufferSz - recvBuffer->idx;
|
||||||
WMEMCPY(recvBuffer->buffer + recvBuffer->idx, buf, sz);
|
WMEMCPY(recvBuffer->buffer + recvBuffer->idx, buf, sz);
|
||||||
|
recvBuffer->idx += sz;
|
||||||
recvBuffer->fileSz += sz;
|
recvBuffer->fileSz += sz;
|
||||||
if (recvBuffer->status) {
|
if (recvBuffer->status) {
|
||||||
if (recvBuffer->status(ssh, recvBuffer->name,
|
if (recvBuffer->status(ssh, recvBuffer->name,
|
||||||
|
|
Loading…
Reference in New Issue