mirror of https://github.com/wolfSSL/wolfssh.git
Changed calls to malloc, free, memcpy, etc. with uses of the wrappers WMALLOC, WFREE, WMEMCPY, etc.
parent
dd79a54541
commit
061463e604
|
@ -211,7 +211,7 @@ static int dump_stats(thread_ctx_t* ctx)
|
||||||
" txCount = %u\r\n rxCount = %u\r\n"
|
" txCount = %u\r\n rxCount = %u\r\n"
|
||||||
" seq = %u\r\n peerSeq = %u\r\n",
|
" seq = %u\r\n peerSeq = %u\r\n",
|
||||||
ctx->id, txCount, rxCount, seq, peerSeq);
|
ctx->id, txCount, rxCount, seq, peerSeq);
|
||||||
statsSz = (word32)strlen(ctx->statsBuffer);
|
statsSz = (word32)WSTRLEN(ctx->statsBuffer);
|
||||||
|
|
||||||
fprintf(stderr, "%s", ctx->statsBuffer);
|
fprintf(stderr, "%s", ctx->statsBuffer);
|
||||||
return wolfSSH_stream_send(ctx->ssh, (byte*)ctx->statsBuffer, statsSz);
|
return wolfSSH_stream_send(ctx->ssh, (byte*)ctx->statsBuffer, statsSz);
|
||||||
|
@ -287,7 +287,7 @@ static void *global_req(void *ctx)
|
||||||
sleep(SSH_TIMEOUT);
|
sleep(SSH_TIMEOUT);
|
||||||
|
|
||||||
ret = wolfSSH_global_request(threadCtx->ssh, (const unsigned char *)str,
|
ret = wolfSSH_global_request(threadCtx->ssh, (const unsigned char *)str,
|
||||||
strlen(str), 1);
|
WSTRLEN(str), 1);
|
||||||
if (ret != WS_SUCCESS)
|
if (ret != WS_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Global Request Failed.\n");
|
printf("Global Request Failed.\n");
|
||||||
|
@ -322,7 +322,7 @@ static int wolfSSH_AGENT_DefaultActions(WS_AgentCbAction action, void* vCtx)
|
||||||
struct sockaddr_un* name = &ctx->name;
|
struct sockaddr_un* name = &ctx->name;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
memset(name, 0, sizeof(struct sockaddr_un));
|
WMEMSET(name, 0, sizeof(struct sockaddr_un));
|
||||||
ctx->pid = getpid();
|
ctx->pid = getpid();
|
||||||
name->sun_family = AF_LOCAL;
|
name->sun_family = AF_LOCAL;
|
||||||
|
|
||||||
|
@ -331,7 +331,7 @@ static int wolfSSH_AGENT_DefaultActions(WS_AgentCbAction action, void* vCtx)
|
||||||
|
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
name->sun_path[sizeof(name->sun_path) - 1] = '\0';
|
name->sun_path[sizeof(name->sun_path) - 1] = '\0';
|
||||||
size = strlen(name->sun_path) +
|
size = WSTRLEN(name->sun_path) +
|
||||||
offsetof(struct sockaddr_un, sun_path);
|
offsetof(struct sockaddr_un, sun_path);
|
||||||
ctx->listenFd = socket(AF_UNIX, SOCK_STREAM, 0);
|
ctx->listenFd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if (ctx->listenFd == -1) {
|
if (ctx->listenFd == -1) {
|
||||||
|
@ -390,11 +390,11 @@ static int wolfSSH_FwdDefaultActions(WS_FwdCbAction action, void* vCtx,
|
||||||
else if (action == WOLFSSH_FWD_LOCAL_CLEANUP) {
|
else if (action == WOLFSSH_FWD_LOCAL_CLEANUP) {
|
||||||
WCLOSESOCKET(ctx->appFd);
|
WCLOSESOCKET(ctx->appFd);
|
||||||
if (ctx->hostName) {
|
if (ctx->hostName) {
|
||||||
free(ctx->hostName);
|
WFREE(ctx->hostName, NULL, 0);
|
||||||
ctx->hostName = NULL;
|
ctx->hostName = NULL;
|
||||||
}
|
}
|
||||||
if (ctx->originName) {
|
if (ctx->originName) {
|
||||||
free(ctx->originName);
|
WFREE(ctx->originName, NULL, 0);
|
||||||
ctx->originName = NULL;
|
ctx->originName = NULL;
|
||||||
}
|
}
|
||||||
ctx->state = FWD_STATE_INIT;
|
ctx->state = FWD_STATE_INIT;
|
||||||
|
@ -411,7 +411,7 @@ static int wolfSSH_FwdDefaultActions(WS_FwdCbAction action, void* vCtx,
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
|
|
||||||
memset(&addr, 0, sizeof addr);
|
WMEMSET(&addr, 0, sizeof addr);
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
addr.sin_port = htons((word16)port);
|
addr.sin_port = htons((word16)port);
|
||||||
addr.sin_addr.s_addr = INADDR_ANY;
|
addr.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
@ -429,7 +429,7 @@ static int wolfSSH_FwdDefaultActions(WS_FwdCbAction action, void* vCtx,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (ctx->hostName != NULL) {
|
if (ctx->hostName != NULL) {
|
||||||
free(ctx->hostName);
|
WFREE(ctx->hostName, NULL, 0);
|
||||||
ctx->hostName = NULL;
|
ctx->hostName = NULL;
|
||||||
}
|
}
|
||||||
if (ctx->listenFd != -1) {
|
if (ctx->listenFd != -1) {
|
||||||
|
@ -441,11 +441,11 @@ static int wolfSSH_FwdDefaultActions(WS_FwdCbAction action, void* vCtx,
|
||||||
}
|
}
|
||||||
else if (action == WOLFSSH_FWD_REMOTE_CLEANUP) {
|
else if (action == WOLFSSH_FWD_REMOTE_CLEANUP) {
|
||||||
if (ctx->hostName) {
|
if (ctx->hostName) {
|
||||||
free(ctx->hostName);
|
WFREE(ctx->hostName, NULL, 0);
|
||||||
ctx->hostName = NULL;
|
ctx->hostName = NULL;
|
||||||
}
|
}
|
||||||
if (ctx->originName) {
|
if (ctx->originName) {
|
||||||
free(ctx->originName);
|
WFREE(ctx->originName, NULL, 0);
|
||||||
ctx->originName = NULL;
|
ctx->originName = NULL;
|
||||||
}
|
}
|
||||||
if (ctx->listenFd != -1) {
|
if (ctx->listenFd != -1) {
|
||||||
|
@ -515,7 +515,7 @@ static int termios_show(int fd)
|
||||||
int i;
|
int i;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
memset((void *) &tios, 0, sizeof(tios));
|
WMEMSET((void *) &tios, 0, sizeof(tios));
|
||||||
rc = tcgetattr(fd, &tios);
|
rc = tcgetattr(fd, &tios);
|
||||||
printf("tcgetattr returns=%x\n", rc);
|
printf("tcgetattr returns=%x\n", rc);
|
||||||
|
|
||||||
|
@ -796,7 +796,8 @@ static int ssh_worker(thread_ctx_t* threadCtx)
|
||||||
WCLOSESOCKET(fwdFd);
|
WCLOSESOCKET(fwdFd);
|
||||||
fwdFd = -1;
|
fwdFd = -1;
|
||||||
if (threadCtx->fwdCbCtx.hostName != NULL) {
|
if (threadCtx->fwdCbCtx.hostName != NULL) {
|
||||||
free(threadCtx->fwdCbCtx.hostName);
|
WFREE(threadCtx->fwdCbCtx.hostName,
|
||||||
|
NULL, 0);
|
||||||
threadCtx->fwdCbCtx.hostName = NULL;
|
threadCtx->fwdCbCtx.hostName = NULL;
|
||||||
}
|
}
|
||||||
threadCtx->fwdCbCtx.state = FWD_STATE_LISTEN;
|
threadCtx->fwdCbCtx.state = FWD_STATE_LISTEN;
|
||||||
|
@ -917,7 +918,8 @@ static int ssh_worker(thread_ctx_t* threadCtx)
|
||||||
WCLOSESOCKET(fwdFd);
|
WCLOSESOCKET(fwdFd);
|
||||||
fwdFd = -1;
|
fwdFd = -1;
|
||||||
if (threadCtx->fwdCbCtx.hostName != NULL) {
|
if (threadCtx->fwdCbCtx.hostName != NULL) {
|
||||||
free(threadCtx->fwdCbCtx.hostName);
|
WFREE(threadCtx->fwdCbCtx.hostName,
|
||||||
|
NULL, 0);
|
||||||
threadCtx->fwdCbCtx.hostName = NULL;
|
threadCtx->fwdCbCtx.hostName = NULL;
|
||||||
}
|
}
|
||||||
threadCtx->fwdCbCtx.state = FWD_STATE_LISTEN;
|
threadCtx->fwdCbCtx.state = FWD_STATE_LISTEN;
|
||||||
|
@ -986,7 +988,7 @@ static int ssh_worker(thread_ctx_t* threadCtx)
|
||||||
threadCtx->fwdCbCtx.state = FWD_STATE_CONNECT;
|
threadCtx->fwdCbCtx.state = FWD_STATE_CONNECT;
|
||||||
threadCtx->fwdCbCtx.appFd = fwdFd;
|
threadCtx->fwdCbCtx.appFd = fwdFd;
|
||||||
originAddrSz = sizeof originAddr;
|
originAddrSz = sizeof originAddr;
|
||||||
memset(&originAddr, 0, originAddrSz);
|
WMEMSET(&originAddr, 0, originAddrSz);
|
||||||
if (getpeername(fwdFd,
|
if (getpeername(fwdFd,
|
||||||
(struct sockaddr*)&originAddr,
|
(struct sockaddr*)&originAddr,
|
||||||
&originAddrSz) == 0) {
|
&originAddrSz) == 0) {
|
||||||
|
@ -1035,7 +1037,7 @@ static int ssh_worker(thread_ctx_t* threadCtx)
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
|
|
||||||
memset(&addr, 0, sizeof addr);
|
WMEMSET(&addr, 0, sizeof addr);
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
addr.sin_addr.s_addr =
|
addr.sin_addr.s_addr =
|
||||||
inet_addr(threadCtx->fwdCbCtx.hostName);
|
inet_addr(threadCtx->fwdCbCtx.hostName);
|
||||||
|
@ -1226,11 +1228,11 @@ static THREAD_RETURN WOLFSSH_THREAD server_worker(void* vArgs)
|
||||||
}
|
}
|
||||||
#ifdef WOLFSSH_FWD
|
#ifdef WOLFSSH_FWD
|
||||||
if (threadCtx->fwdCbCtx.hostName != NULL) {
|
if (threadCtx->fwdCbCtx.hostName != NULL) {
|
||||||
free(threadCtx->fwdCbCtx.hostName);
|
WFREE(threadCtx->fwdCbCtx.hostName, NULL, 0);
|
||||||
threadCtx->fwdCbCtx.hostName = NULL;
|
threadCtx->fwdCbCtx.hostName = NULL;
|
||||||
}
|
}
|
||||||
if (threadCtx->fwdCbCtx.originName != NULL) {
|
if (threadCtx->fwdCbCtx.originName != NULL) {
|
||||||
free(threadCtx->fwdCbCtx.originName);
|
WFREE(threadCtx->fwdCbCtx.originName, NULL, 0);
|
||||||
threadCtx->fwdCbCtx.originName = NULL;
|
threadCtx->fwdCbCtx.originName = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1246,7 +1248,7 @@ static THREAD_RETURN WOLFSSH_THREAD server_worker(void* vArgs)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
free(threadCtx);
|
WFREE(threadCtx, NULL, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1345,12 +1347,12 @@ static PwMap* PwMapNew(PwMapList* list, byte type, const byte* username,
|
||||||
{
|
{
|
||||||
PwMap* map;
|
PwMap* map;
|
||||||
|
|
||||||
map = (PwMap*)malloc(sizeof(PwMap));
|
map = (PwMap*)WMALLOC(sizeof(PwMap), NULL, 0);
|
||||||
if (map != NULL) {
|
if (map != NULL) {
|
||||||
map->type = type;
|
map->type = type;
|
||||||
if (usernameSz >= sizeof(map->username))
|
if (usernameSz >= sizeof(map->username))
|
||||||
usernameSz = sizeof(map->username) - 1;
|
usernameSz = sizeof(map->username) - 1;
|
||||||
memcpy(map->username, username, usernameSz + 1);
|
WMEMCPY(map->username, username, usernameSz + 1);
|
||||||
map->username[usernameSz] = 0;
|
map->username[usernameSz] = 0;
|
||||||
map->usernameSz = usernameSz;
|
map->usernameSz = usernameSz;
|
||||||
|
|
||||||
|
@ -1374,8 +1376,8 @@ static void PwMapListDelete(PwMapList* list)
|
||||||
while (head != NULL) {
|
while (head != NULL) {
|
||||||
PwMap* cur = head;
|
PwMap* cur = head;
|
||||||
head = head->next;
|
head = head->next;
|
||||||
memset(cur, 0, sizeof(PwMap));
|
WMEMSET(cur, 0, sizeof(PwMap));
|
||||||
free(cur);
|
WFREE(cur, NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1448,14 +1450,14 @@ static int LoadNoneBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
|
|
||||||
while (*str != 0) {
|
while (*str != 0) {
|
||||||
username = str;
|
username = str;
|
||||||
str = strchr(username, '\n');
|
str = WSTRCHR(username, '\n');
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*str = 0;
|
*str = 0;
|
||||||
str++;
|
str++;
|
||||||
if (PwMapNew(list, WOLFSSH_USERAUTH_NONE,
|
if (PwMapNew(list, WOLFSSH_USERAUTH_NONE,
|
||||||
(byte*)username, (word32)strlen(username),
|
(byte*)username, (word32)WSTRLEN(username),
|
||||||
NULL, 0) == NULL ) {
|
NULL, 0) == NULL ) {
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1484,22 +1486,22 @@ static int LoadPasswordBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
while (*str != 0) {
|
while (*str != 0) {
|
||||||
delimiter = strchr(str, ':');
|
delimiter = WSTRCHR(str, ':');
|
||||||
if (delimiter == NULL) {
|
if (delimiter == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
username = str;
|
username = str;
|
||||||
*delimiter = 0;
|
*delimiter = 0;
|
||||||
password = delimiter + 1;
|
password = delimiter + 1;
|
||||||
str = strchr(password, '\n');
|
str = WSTRCHR(password, '\n');
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*str = 0;
|
*str = 0;
|
||||||
str++;
|
str++;
|
||||||
if (PwMapNew(list, WOLFSSH_USERAUTH_PASSWORD,
|
if (PwMapNew(list, WOLFSSH_USERAUTH_PASSWORD,
|
||||||
(byte*)username, (word32)strlen(username),
|
(byte*)username, (word32)WSTRLEN(username),
|
||||||
(byte*)password, (word32)strlen(password)) == NULL ) {
|
(byte*)password, (word32)WSTRLEN(password)) == NULL ) {
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1532,14 +1534,14 @@ static int LoadPublicKeyBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
|
|
||||||
while (str < end && *str != 0) {
|
while (str < end && *str != 0) {
|
||||||
/* Skip the public key type. This example will always be ssh-rsa. */
|
/* Skip the public key type. This example will always be ssh-rsa. */
|
||||||
delimiter = strchr(str, ' ');
|
delimiter = WSTRCHR(str, ' ');
|
||||||
if (delimiter == NULL) {
|
if (delimiter == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (str >= end)
|
if (str >= end)
|
||||||
break;
|
break;
|
||||||
str = delimiter + 1;
|
str = delimiter + 1;
|
||||||
delimiter = strchr(str, ' ');
|
delimiter = WSTRCHR(str, ' ');
|
||||||
if (delimiter == NULL) {
|
if (delimiter == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1549,7 +1551,7 @@ static int LoadPublicKeyBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
if (str >= end)
|
if (str >= end)
|
||||||
break;
|
break;
|
||||||
str = delimiter + 1;
|
str = delimiter + 1;
|
||||||
delimiter = strchr(str, '\n');
|
delimiter = WSTRCHR(str, '\n');
|
||||||
if (delimiter == NULL) {
|
if (delimiter == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1560,9 +1562,9 @@ static int LoadPublicKeyBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
|
|
||||||
/* more than enough space for base64 decode
|
/* more than enough space for base64 decode
|
||||||
* not using WMALLOC because internal.h is not included for DYNTYPE_* */
|
* not using WMALLOC because internal.h is not included for DYNTYPE_* */
|
||||||
publicKey = (byte*)malloc(publicKey64Sz);
|
publicKey = (byte*)WMALLOC(publicKey64Sz, NULL, 0);
|
||||||
if (publicKey == NULL) {
|
if (publicKey == NULL) {
|
||||||
fprintf(stderr, "error with malloc\n");
|
fprintf(stderr, "error with WMALLOC\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
publicKeySz = publicKey64Sz;
|
publicKeySz = publicKey64Sz;
|
||||||
|
@ -1570,7 +1572,7 @@ static int LoadPublicKeyBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
if (Base64_Decode(publicKey64, publicKey64Sz,
|
if (Base64_Decode(publicKey64, publicKey64Sz,
|
||||||
publicKey, &publicKeySz) != 0) {
|
publicKey, &publicKeySz) != 0) {
|
||||||
|
|
||||||
free(publicKey);
|
WFREE(publicKey, NULL, 0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1582,10 +1584,10 @@ static int LoadPublicKeyBuffer(byte* buf, word32 bufSz, PwMapList* list)
|
||||||
username, usernameSz,
|
username, usernameSz,
|
||||||
publicKey, publicKeySz) == NULL ) {
|
publicKey, publicKeySz) == NULL ) {
|
||||||
|
|
||||||
free(publicKey);
|
WFREE(publicKey, NULL, 0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
free(publicKey);
|
WFREE(publicKey, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1631,11 +1633,11 @@ static int wsUserAuth(byte authType,
|
||||||
|
|
||||||
while (map != NULL) {
|
while (map != NULL) {
|
||||||
if (authData->usernameSz == map->usernameSz &&
|
if (authData->usernameSz == map->usernameSz &&
|
||||||
memcmp(authData->username, map->username, map->usernameSz) == 0 &&
|
WMEMCMP(authData->username, map->username, map->usernameSz) == 0 &&
|
||||||
authData->type == map->type) {
|
authData->type == map->type) {
|
||||||
|
|
||||||
if (authData->type == WOLFSSH_USERAUTH_PUBLICKEY) {
|
if (authData->type == WOLFSSH_USERAUTH_PUBLICKEY) {
|
||||||
if (memcmp(map->p, authHash, WC_SHA256_DIGEST_SIZE) == 0) {
|
if (WMEMCMP(map->p, authHash, WC_SHA256_DIGEST_SIZE) == 0) {
|
||||||
return WOLFSSH_USERAUTH_SUCCESS;
|
return WOLFSSH_USERAUTH_SUCCESS;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1643,7 +1645,7 @@ static int wsUserAuth(byte authType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (authData->type == WOLFSSH_USERAUTH_PASSWORD) {
|
else if (authData->type == WOLFSSH_USERAUTH_PASSWORD) {
|
||||||
if (memcmp(map->p, authHash, WC_SHA256_DIGEST_SIZE) == 0) {
|
if (WMEMCMP(map->p, authHash, WC_SHA256_DIGEST_SIZE) == 0) {
|
||||||
return WOLFSSH_USERAUTH_SUCCESS;
|
return WOLFSSH_USERAUTH_SUCCESS;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1663,7 +1665,7 @@ static int wsUserAuth(byte authType,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authData->type == map->type) {
|
if (authData->type == map->type) {
|
||||||
if (memcmp(map->p, authHash, WC_SHA256_DIGEST_SIZE) == 0) {
|
if (WMEMCMP(map->p, authHash, WC_SHA256_DIGEST_SIZE) == 0) {
|
||||||
return WOLFSSH_USERAUTH_SUCCESS;
|
return WOLFSSH_USERAUTH_SUCCESS;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1753,7 +1755,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '?' :
|
case '?' :
|
||||||
ShowUsage();
|
ShowUsage();
|
||||||
exit(EXIT_SUCCESS);
|
WEXIT(EXIT_SUCCESS);
|
||||||
|
|
||||||
case '1':
|
case '1':
|
||||||
multipleConnections = 0;
|
multipleConnections = 0;
|
||||||
|
@ -1799,7 +1801,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ShowUsage();
|
ShowUsage();
|
||||||
exit(MY_EX_USAGE);
|
WEXIT(MY_EX_USAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1825,16 +1827,16 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
|
|
||||||
if (wolfSSH_Init() != WS_SUCCESS) {
|
if (wolfSSH_Init() != WS_SUCCESS) {
|
||||||
fprintf(stderr, "Couldn't initialize wolfSSH.\n");
|
fprintf(stderr, "Couldn't initialize wolfSSH.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx = wolfSSH_CTX_new(WOLFSSH_ENDPOINT_SERVER, NULL);
|
ctx = wolfSSH_CTX_new(WOLFSSH_ENDPOINT_SERVER, NULL);
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
fprintf(stderr, "Couldn't allocate SSH CTX data.\n");
|
fprintf(stderr, "Couldn't allocate SSH CTX data.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&pwMapList, 0, sizeof(pwMapList));
|
WMEMSET(&pwMapList, 0, sizeof(pwMapList));
|
||||||
if (serverArgs->user_auth == NULL)
|
if (serverArgs->user_auth == NULL)
|
||||||
wolfSSH_SetUserAuth(ctx, wsUserAuth);
|
wolfSSH_SetUserAuth(ctx, wsUserAuth);
|
||||||
else
|
else
|
||||||
|
@ -1859,7 +1861,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
keyLoadBuf = (byte*)WMALLOC(EXAMPLE_KEYLOAD_BUFFER_SZ,
|
keyLoadBuf = (byte*)WMALLOC(EXAMPLE_KEYLOAD_BUFFER_SZ,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
if (keyLoadBuf == NULL) {
|
if (keyLoadBuf == NULL) {
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
keyLoadBuf = buf;
|
keyLoadBuf = buf;
|
||||||
|
@ -1869,12 +1871,12 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
bufSz = load_key(peerEcc, keyLoadBuf, bufSz);
|
bufSz = load_key(peerEcc, keyLoadBuf, bufSz);
|
||||||
if (bufSz == 0) {
|
if (bufSz == 0) {
|
||||||
fprintf(stderr, "Couldn't load key file.\n");
|
fprintf(stderr, "Couldn't load key file.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if (wolfSSH_CTX_UsePrivateKey_buffer(ctx, keyLoadBuf, bufSz,
|
if (wolfSSH_CTX_UsePrivateKey_buffer(ctx, keyLoadBuf, bufSz,
|
||||||
WOLFSSH_FORMAT_ASN1) < 0) {
|
WOLFSSH_FORMAT_ASN1) < 0) {
|
||||||
fprintf(stderr, "Couldn't use key buffer.\n");
|
fprintf(stderr, "Couldn't use key buffer.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userPubKey) {
|
if (userPubKey) {
|
||||||
|
@ -1887,20 +1889,20 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
/* create temp buffer and load in file */
|
/* create temp buffer and load in file */
|
||||||
if (userBufSz == 0) {
|
if (userBufSz == 0) {
|
||||||
fprintf(stderr, "Couldn't find size of file %s.\n", userPubKey);
|
fprintf(stderr, "Couldn't find size of file %s.\n", userPubKey);
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
userBuf = (byte*)malloc(userBufSz);
|
userBuf = (byte*)WMALLOC(userBufSz, NULL, 0);
|
||||||
if (userBuf == NULL) {
|
if (userBuf == NULL) {
|
||||||
fprintf(stderr, "malloc failed\n");
|
fprintf(stderr, "WMALLOC failed\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
load_file(userPubKey, userBuf, &userBufSz);
|
load_file(userPubKey, userBuf, &userBufSz);
|
||||||
LoadPublicKeyBuffer(userBuf, userBufSz, &pwMapList);
|
LoadPublicKeyBuffer(userBuf, userBufSz, &pwMapList);
|
||||||
}
|
}
|
||||||
|
|
||||||
bufSz = (word32)strlen(samplePasswordBuffer);
|
bufSz = (word32)WSTRLEN(samplePasswordBuffer);
|
||||||
memcpy(keyLoadBuf, samplePasswordBuffer, bufSz);
|
WMEMCPY(keyLoadBuf, samplePasswordBuffer, bufSz);
|
||||||
keyLoadBuf[bufSz] = 0;
|
keyLoadBuf[bufSz] = 0;
|
||||||
LoadPasswordBuffer(keyLoadBuf, bufSz, &pwMapList);
|
LoadPasswordBuffer(keyLoadBuf, bufSz, &pwMapList);
|
||||||
|
|
||||||
|
@ -1915,14 +1917,14 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (bufName != NULL) {
|
if (bufName != NULL) {
|
||||||
bufSz = (word32)strlen(bufName);
|
bufSz = (word32)WSTRLEN(bufName);
|
||||||
memcpy(keyLoadBuf, bufName, bufSz);
|
WMEMCPY(keyLoadBuf, bufName, bufSz);
|
||||||
keyLoadBuf[bufSz] = 0;
|
keyLoadBuf[bufSz] = 0;
|
||||||
LoadPublicKeyBuffer(keyLoadBuf, bufSz, &pwMapList);
|
LoadPublicKeyBuffer(keyLoadBuf, bufSz, &pwMapList);
|
||||||
}
|
}
|
||||||
|
|
||||||
bufSz = (word32)strlen(sampleNoneBuffer);
|
bufSz = (word32)WSTRLEN(sampleNoneBuffer);
|
||||||
memcpy(keyLoadBuf, sampleNoneBuffer, bufSz);
|
WMEMCPY(keyLoadBuf, sampleNoneBuffer, bufSz);
|
||||||
keyLoadBuf[bufSz] = 0;
|
keyLoadBuf[bufSz] = 0;
|
||||||
LoadNoneBuffer(keyLoadBuf, bufSz, &pwMapList);
|
LoadNoneBuffer(keyLoadBuf, bufSz, &pwMapList);
|
||||||
|
|
||||||
|
@ -1938,7 +1940,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
/* wait for network and storage device */
|
/* wait for network and storage device */
|
||||||
if (NETBOOT_Wait_For_Network_Up(NU_SUSPEND) != NU_SUCCESS) {
|
if (NETBOOT_Wait_For_Network_Up(NU_SUSPEND) != NU_SUCCESS) {
|
||||||
fprintf(stderr, "Couldn't find network.\r\n");
|
fprintf(stderr, "Couldn't find network.\r\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < 15 && ret != NU_SUCCESS; i++)
|
for(i = 0; i < 15 && ret != NU_SUCCESS; i++)
|
||||||
|
@ -1950,7 +1952,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
|
|
||||||
if (ret != NU_SUCCESS) {
|
if (ret != NU_SUCCESS) {
|
||||||
fprintf(stderr, "Couldn't find storage device.\r\n");
|
fprintf(stderr, "Couldn't find storage device.\r\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1959,7 +1961,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
if (readyFile != NULL) {
|
if (readyFile != NULL) {
|
||||||
#ifdef NO_FILESYSTEM
|
#ifdef NO_FILESYSTEM
|
||||||
fprintf(stderr, "cannot create readyFile with no file system.\r\n");
|
fprintf(stderr, "cannot create readyFile with no file system.\r\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
#endif
|
#endif
|
||||||
port = 0;
|
port = 0;
|
||||||
}
|
}
|
||||||
|
@ -1988,18 +1990,19 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
WOLFSSH* ssh;
|
WOLFSSH* ssh;
|
||||||
thread_ctx_t* threadCtx;
|
thread_ctx_t* threadCtx;
|
||||||
|
|
||||||
threadCtx = (thread_ctx_t*)malloc(sizeof(thread_ctx_t));
|
threadCtx = (thread_ctx_t*)WMALLOC(sizeof(thread_ctx_t),
|
||||||
|
NULL, 0);
|
||||||
if (threadCtx == NULL) {
|
if (threadCtx == NULL) {
|
||||||
fprintf(stderr, "Couldn't allocate thread context data.\n");
|
fprintf(stderr, "Couldn't allocate thread context data.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
memset(threadCtx, 0, sizeof *threadCtx);
|
WMEMSET(threadCtx, 0, sizeof *threadCtx);
|
||||||
|
|
||||||
ssh = wolfSSH_new(ctx);
|
ssh = wolfSSH_new(ctx);
|
||||||
if (ssh == NULL) {
|
if (ssh == NULL) {
|
||||||
free(threadCtx);
|
WFREE(threadCtx, NULL, 0);
|
||||||
fprintf(stderr, "Couldn't allocate SSH data.\n");
|
fprintf(stderr, "Couldn't allocate SSH data.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
wolfSSH_SetUserAuthCtx(ssh, &pwMapList);
|
wolfSSH_SetUserAuthCtx(ssh, &pwMapList);
|
||||||
/* Use the session object for its own highwater callback ctx */
|
/* Use the session object for its own highwater callback ctx */
|
||||||
|
@ -2013,7 +2016,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
if (wolfSSH_SFTP_SetDefaultPath(ssh, defaultSftpPath)
|
if (wolfSSH_SFTP_SetDefaultPath(ssh, defaultSftpPath)
|
||||||
!= WS_SUCCESS) {
|
!= WS_SUCCESS) {
|
||||||
fprintf(stderr, "Couldn't store default sftp path.\n");
|
fprintf(stderr, "Couldn't store default sftp path.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -2031,7 +2034,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
* 0.0.0.0 if ip adder any */
|
* 0.0.0.0 if ip adder any */
|
||||||
if (NU_Get_Sock_Name(listenFd, &sock, &addrLength) != NU_SUCCESS) {
|
if (NU_Get_Sock_Name(listenFd, &sock, &addrLength) != NU_SUCCESS) {
|
||||||
fprintf(stderr, "Couldn't find network.\r\n");
|
fprintf(stderr, "Couldn't find network.\r\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
WMEMCPY(ipaddr, &sock.ip_num, MAX_ADDRESS_SIZE);
|
WMEMCPY(ipaddr, &sock.ip_num, MAX_ADDRESS_SIZE);
|
||||||
|
@ -2082,7 +2085,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
||||||
wolfSSH_CTX_free(ctx);
|
wolfSSH_CTX_free(ctx);
|
||||||
if (wolfSSH_Cleanup() != WS_SUCCESS) {
|
if (wolfSSH_Cleanup() != WS_SUCCESS) {
|
||||||
fprintf(stderr, "Couldn't clean up wolfSSH.\n");
|
fprintf(stderr, "Couldn't clean up wolfSSH.\n");
|
||||||
exit(EXIT_FAILURE);
|
WEXIT(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
#if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS)
|
#if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS)
|
||||||
wc_ecc_fp_free(); /* free per thread cache */
|
wc_ecc_fp_free(); /* free per thread cache */
|
||||||
|
|
|
@ -62,6 +62,10 @@ extern "C" {
|
||||||
#define WFPUTS fputs
|
#define WFPUTS fputs
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define WEXIT(n) exit((n))
|
||||||
|
|
||||||
|
|
||||||
#ifndef WOLFSSH_HANDLE
|
#ifndef WOLFSSH_HANDLE
|
||||||
/* handle for console to use during Linux console code translations */
|
/* handle for console to use during Linux console code translations */
|
||||||
#ifdef USE_WINDOWS_API
|
#ifdef USE_WINDOWS_API
|
||||||
|
@ -396,6 +400,8 @@ extern "C" {
|
||||||
#define WSTRNCAT(s1,s2,n) wstrncat((s1),(s2),(n))
|
#define WSTRNCAT(s1,s2,n) wstrncat((s1),(s2),(n))
|
||||||
#define WSTRDUP(s,h,t) wstrdup((s),(h),(t))
|
#define WSTRDUP(s,h,t) wstrdup((s),(h),(t))
|
||||||
|
|
||||||
|
#define WSTRCHR(s,c) strchr((s),(c))
|
||||||
|
|
||||||
#ifdef USE_WINDOWS_API
|
#ifdef USE_WINDOWS_API
|
||||||
#define WSTRNCPY(s1,s2,n) strncpy_s((s1),(n),(s2),(n))
|
#define WSTRNCPY(s1,s2,n) strncpy_s((s1),(n),(s2),(n))
|
||||||
#define WSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
|
#define WSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
|
||||||
|
|
Loading…
Reference in New Issue