mirror of https://github.com/wolfSSL/wolfssh.git
compiling with port changes, needs work for runtime use
parent
c4acd86df5
commit
3a4c75f651
|
@ -12241,6 +12241,7 @@ int SendKexDhReply(WOLFSSH* ssh)
|
|||
if (sig_ptr)
|
||||
WFREE(sig_ptr, heap, DYNTYPE_BUFFER);
|
||||
#endif
|
||||
WOLFSSH_UNUSED(heap);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -16686,6 +16687,7 @@ int wolfSSH_CleanPath(WOLFSSH* ssh, char* in)
|
|||
WMEMCPY(in, path, sz);
|
||||
in[sz] = '\0';
|
||||
WFREE(path, heap, DYNTYPE_PATH);
|
||||
WOLFSSH_UNUSED(heap);
|
||||
return (int)sz;
|
||||
}
|
||||
#endif /* WOLFSSH_SFTP || WOLFSSH_SCP */
|
||||
|
@ -16756,6 +16758,9 @@ int wolfSSH_oct2dec(WOLFSSH* ssh, byte* oct, word32 octSz)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#ifndef WOLFSSL_MAX_32BIT
|
||||
#define WOLFSSL_MAX_32BIT INT_MAX
|
||||
#endif
|
||||
|
||||
/* addend1 += addend2 */
|
||||
void AddAssign64(word32* addend1, word32 addend2)
|
||||
|
|
|
@ -126,7 +126,7 @@ int wfopen(WFILE** f, const char* filename, const char* mode)
|
|||
|
||||
ret = (int)WFSEEK(NULL, &fd, shortOffset[0], SYS_FS_SEEK_SET);
|
||||
if (ret != -1)
|
||||
ret = (int)WFWRITE(NULL, &fd, buf, sz);
|
||||
ret = (int)WFWRITE(NULL, buf, 1, sz, &fd);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ int wfopen(WFILE** f, const char* filename, const char* mode)
|
|||
|
||||
ret = (int)WFSEEK(NULL, &fd, shortOffset[0], SYS_FS_SEEK_SET);
|
||||
if (ret != -1)
|
||||
ret = (int)WFREAD(NULL, &fd, buf, sz);
|
||||
ret = (int)WFREAD(NULL, buf, 1, sz, &fd);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -1895,7 +1895,11 @@ int wolfSSH_ReadKey_file(const char* name,
|
|||
byte** out, word32* outSz, const byte** outType, word32* outTypeSz,
|
||||
byte* isPrivate, void* heap)
|
||||
{
|
||||
|
||||
WFILE* file;
|
||||
#ifdef MICROCHIP_MPLAB_HARMONY
|
||||
WFILE f = WBADFILE;
|
||||
#endif
|
||||
byte* in;
|
||||
word32 inSz;
|
||||
int format;
|
||||
|
@ -1909,6 +1913,7 @@ int wolfSSH_ReadKey_file(const char* name,
|
|||
return WS_BAD_ARGUMENT;
|
||||
|
||||
#ifdef MICROCHIP_MPLAB_HARMONY
|
||||
file = &f;
|
||||
ret = WFOPEN(NULL, &file, name, WOLFSSH_O_RDONLY);
|
||||
if (ret != 0 || *file == WBADFILE) return WS_BAD_FILE_E;
|
||||
#else
|
||||
|
|
|
@ -1975,6 +1975,9 @@ int wolfSSH_SFTP_RecvOpen(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
|
|||
{
|
||||
WS_SFTP_FILEATRB atr;
|
||||
WFD fd;
|
||||
#ifdef MICROCHIP_MPLAB_HARMONY
|
||||
WFILE* f = &fd;
|
||||
#endif
|
||||
word32 sz, dirSz;
|
||||
char dir[WOLFSSH_MAX_FILENAME];
|
||||
word32 reason;
|
||||
|
@ -2074,7 +2077,12 @@ int wolfSSH_SFTP_RecvOpen(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
|
|||
atr.per = 0644;
|
||||
}
|
||||
|
||||
#ifdef MICROCHIP_MPLAB_HARMONY
|
||||
fd = WBADFILE;
|
||||
WFOPEN(ssh->fs, &f, dir, m);
|
||||
#else
|
||||
fd = WOPEN(ssh->fs, dir, m, atr.per);
|
||||
#endif
|
||||
if (fd < 0) {
|
||||
WLOG(WS_LOG_SFTP, "Error opening file %s", dir);
|
||||
res = oer;
|
||||
|
@ -3924,7 +3932,12 @@ int wolfSSH_SFTP_RecvClose(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
|
|||
if (sz == sizeof(WFD)) {
|
||||
WMEMSET((byte*)&fd, 0, sizeof(WFD));
|
||||
WMEMCPY((byte*)&fd, data + idx, sz);
|
||||
|
||||
#ifdef MICROCHIP_MPLAB_HARMONY
|
||||
WFCLOSE(ssh->fs, &fd);
|
||||
#else
|
||||
ret = WCLOSE(ssh->fs, fd);
|
||||
#endif
|
||||
#ifdef WOLFSSH_STOREHANDLE
|
||||
if (SFTP_RemoveHandleNode(ssh, data + idx, sz) != WS_SUCCESS) {
|
||||
WLOG(WS_LOG_SFTP, "Unable to remove handle from list");
|
||||
|
@ -4878,26 +4891,28 @@ int SFTP_GetAttributes(void* fs, const char* fileName, WS_SFTP_FILEATRB* atr,
|
|||
byte noFollow, void* heap)
|
||||
{
|
||||
WSTAT_T stats;
|
||||
WFILE f;
|
||||
WFILE fd = WBADFILE;
|
||||
WFILE *f = &fd;
|
||||
int ret;
|
||||
|
||||
WOLFSSH_UNUSED(heap);
|
||||
WOLFSSH_UNUSED(fs);
|
||||
|
||||
ret = WFOPEN(NULL, &f, filename, WOLFSSH_O_RDONLY);
|
||||
|
||||
if (noFollow) {
|
||||
/* Note, for windows, we treat WSTAT and WLSTAT the same. */
|
||||
if (WLSTAT(fs, fileName, &stats) != 0) {
|
||||
return WS_BAD_FILE_E;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret = WFOPEN(NULL, &f, fileName, WOLFSSH_O_RDONLY);
|
||||
(void)ret;
|
||||
// if (noFollow) {
|
||||
// /* Note, for windows, we treat WSTAT and WLSTAT the same. */
|
||||
// if (WLSTAT(fs, fileName, &stats) != 0) {
|
||||
// return WS_BAD_FILE_E;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
{
|
||||
if (WSTAT(fs, fileName, &stats) != 0) {
|
||||
return WS_BAD_FILE_E;
|
||||
}
|
||||
}
|
||||
WFCLOSE(NULL, &f);
|
||||
WFCLOSE(NULL, f);
|
||||
|
||||
WMEMSET(atr, 0, sizeof(WS_SFTP_FILEATRB));
|
||||
|
||||
|
@ -4934,12 +4949,19 @@ int SFTP_GetAttributes_Handle(WOLFSSH* ssh, byte* handle, int handleSz,
|
|||
WS_SFTP_FILEATRB* atr)
|
||||
{
|
||||
WSTAT_T stats;
|
||||
byte fileName[255];
|
||||
|
||||
if (handleSz != sizeof(word32)) {
|
||||
WLOG(WS_LOG_SFTP, "Unexpected handle size SFTP_GetAttributes_Handle()");
|
||||
}
|
||||
|
||||
if (WSTAT(ssh->fs, *(int*)handle, &stats) != 0) {
|
||||
WMEMSET(fileName, 0, sizeof(fileName));
|
||||
if (SYS_FS_FileNameGet(*(SYS_FS_HANDLE*)handle, fileName, sizeof(fileName)) == false) {
|
||||
printf("unable to get the files name\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (WSTAT(ssh->fs, (const char*)fileName, &stats) != 0) {
|
||||
return WS_BAD_FILE_E;
|
||||
}
|
||||
|
||||
|
|
|
@ -1377,6 +1377,17 @@ extern "C" {
|
|||
#define WRENAME(fs,o,n) SYS_FS_FileDirectoryRenameMove((o),(n))
|
||||
#define WS_DELIM '/'
|
||||
|
||||
static inline char *ff_getcwd(char *r, int rSz)
|
||||
{
|
||||
SYS_FS_RESULT ret;
|
||||
ret = SYS_FS_CurrentWorkingDirectoryGet(r, rSz);
|
||||
if (ret != SYS_FS_RES_SUCCESS) {
|
||||
return r;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
#define WGETCWD(fs,r,rSz) ff_getcwd(r,(rSz))
|
||||
|
||||
#define WOLFSSH_O_RDWR SYS_FS_FILE_OPEN_READ_PLUS
|
||||
#define WOLFSSH_O_RDONLY SYS_FS_FILE_OPEN_READ
|
||||
#define WOLFSSH_O_WRONLY SYS_FS_FILE_OPEN_WRITE
|
||||
|
|
Loading…
Reference in New Issue