1. Fix double free of "data" in the RecvWrite() function.

2. When writing to disk, add the idx to the data pointer.
pull/134/head
John Safranek 2019-01-23 11:00:12 -08:00
parent 02bf8632a8
commit 6bac023986
1 changed files with 1 additions and 3 deletions

View File

@ -1527,7 +1527,6 @@ int wolfSSH_SFTP_RecvOpen(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
}
}
#endif
WFREE(dir, ssh->ctx->heap, DYNTYPE_BUFFER);
/* create packet */
out = (byte*)WMALLOC(outSz, ssh->ctx->heap, DYNTYPE_BUFFER);
@ -1658,7 +1657,6 @@ int wolfSSH_SFTP_RecvOpen(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
ret = WS_FATAL_ERROR;
}
#endif
WFREE(dir, ssh->ctx->heap, DYNTYPE_BUFFER);
/* create packet */
out = (byte*)WMALLOC(outSz, ssh->ctx->heap, DYNTYPE_BUFFER);
@ -2549,7 +2547,7 @@ int wolfSSH_SFTP_RecvWrite(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
ato32(data + idx, &sz);
idx += UINT32_SZ;
if (WriteFile(fd, data, sz, &bytesWritten, &offset) == 0) {
if (WriteFile(fd, data + idx, sz, &bytesWritten, &offset) == 0) {
WLOG(WS_LOG_SFTP, "Error writing to file");
res = err;
type = WOLFSSH_FTP_FAILURE;