Merge pull request #752 from JacobBarthelmeh/wolfsshd

fix for handling memory on socket timeout
pull/755/head
David Garske 2024-11-15 13:11:32 -08:00 committed by GitHub
commit 735cd89c6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 3 deletions

View File

@ -97,3 +97,12 @@ jobs:
run: |
git log -3
sudo ./run_all_sshd_tests.sh
# could use optimization with caching
- name: Test memory after close down
working-directory: ./wolfssh/
run: |
sudo apt-get install valgrind
touch sshd_config.txt
./configure --enable-all LDFLAGS="-L${{ github.workspace }}/build-dir/lib" CPPFLAGS="-I${{ github.workspace }}/build-dir/include -DWOLFSSH_NO_FPKI -DWOLFSSH_NO_SFTP_TIMEOUT -DWOLFSSH_MAX_SFTP_RW=4000000 -DMAX_PATH_SZ=120" --enable-static --disable-shared && make
sudo timeout --preserve-status -s 2 5 valgrind --error-exitcode=1 --leak-check=full ./apps/wolfsshd/wolfsshd -D -f sshd_config -h ./keys/server-key.pem -d -p 22222

View File

@ -2468,9 +2468,11 @@ static int StartSSHD(int argc, char** argv)
struct sockaddr_in6 clientAddr;
socklen_t clientAddrSz = sizeof(clientAddr);
#endif
conn = (WOLFSSHD_CONNECTION*)WMALLOC(sizeof(WOLFSSHD_CONNECTION), NULL, DYNTYPE_SSHD);
conn = (WOLFSSHD_CONNECTION*)WMALLOC(sizeof(WOLFSSHD_CONNECTION),
NULL, DYNTYPE_SSHD);
if (conn == NULL) {
wolfSSH_Log(WS_LOG_ERROR, "[SSHD] Failed to malloc memory for connection");
wolfSSH_Log(WS_LOG_ERROR,
"[SSHD] Failed to malloc memory for connection");
break;
}
@ -2536,9 +2538,13 @@ static int StartSSHD(int argc, char** argv)
}
ret = NewConnection(conn);
}
else {
XFREE(conn, NULL, DYNTYPE_SSHD);
}
#ifdef _WIN32
/* check if service has been shutdown */
if (isDaemon && WaitForSingleObject(serviceStop, 0) == WAIT_OBJECT_0) {
if (isDaemon && WaitForSingleObject(serviceStop, 0) ==
WAIT_OBJECT_0) {
quit = 1;
}
#endif