Skip to content

Commit bbe3bac

Browse files
add regression test and use a better macro name
1 parent ab3622e commit bbe3bac

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

.github/workflows/sshd-test.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,25 @@ jobs:
108108
./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
109109
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
110110
111+
# regression test, check that cat command does not hang
112+
- name: Test cat command for hanging
113+
working-directory: ./wolfssh/
114+
timeout-minutes: 1
115+
run: |
116+
touch sshd_config.txt
117+
echo "AuthorizedKeysFile $PWD/authorized_keys_test" >> sshd_config.txt
118+
cat ./keys/hansel-*.pub > authorized_keys_test
119+
sed -i.bak "s/hansel/$USER/" ./authorized_keys_test
120+
./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
121+
sudo ./apps/wolfsshd/wolfsshd -f sshd_config.txt -h ./keys/server-key.pem -p 22225
122+
chmod 600 ./keys/hansel-key-rsa.pem
123+
tail -c 50000 /dev/urandom > test
124+
while ! nc -z 127.0.0.1 22225; do echo "waiting for wolfSSHd"; sleep 0.2; done
125+
cat test | ssh -vvv -T -i ./keys/hansel-key-rsa.pem -oStrictHostKeyChecking=no 127.0.0.1 -p 22225 'cat > test-file'
126+
diff test ~/test-file
127+
sudo pkill wolfsshd
128+
129+
111130
- name: configure with debug
112131
working-directory: ./wolfssh/
113132
run : |

apps/wolfsshd/wolfsshd.c

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@
5757
#define WOLFSSHD_TIMEOUT 1
5858
#endif
5959

60+
#ifdef EXAMPLE_BUFFER_SZ
61+
#warning use WOLFSSHD_SHELL_BUFFER_SZ instead of EXAMPLE_BUFFER_SZ
62+
#define WOLFSSHD_SHELL_BUFFER_SZ EXAMPLE_BUFFER_SZ
63+
#endif
64+
6065
#if defined(WOLFSSH_SHELL) && !defined(_WIN32)
6166
#ifdef HAVE_PTY_H
6267
#include <pty.h>
@@ -815,11 +820,11 @@ static int SHELL_Subsystem(WOLFSSHD_CONNECTION* conn, WOLFSSH* ssh,
815820
{
816821
BOOL ret;
817822
word32 shellChannelId = 0;
818-
#ifndef EXAMPLE_BUFFER_SZ
823+
#ifndef WOLFSSHD_SHELL_BUFFER_SZ
819824
/* default to try and read max packet size */
820-
#define EXAMPLE_BUFFER_SZ 32768
825+
#define WOLFSSHD_SHELL_BUFFER_SZ 32768
821826
#endif
822-
byte shellBuffer[EXAMPLE_BUFFER_SZ];
827+
byte shellBuffer[WOLFSSHD_SHELL_BUFFER_SZ];
823828
int cnt_r, cnt_w;
824829
HANDLE ptyIn = NULL, ptyOut = NULL;
825830
HANDLE cnslIn = NULL, cnslOut = NULL;
@@ -1106,9 +1111,9 @@ static int SHELL_Subsystem(WOLFSSHD_CONNECTION* conn, WOLFSSH* ssh,
11061111
}
11071112

11081113
if (readPending) {
1109-
WMEMSET(shellBuffer, 0, EXAMPLE_BUFFER_SZ);
1114+
WMEMSET(shellBuffer, 0, WOLFSSHD_SHELL_BUFFER_SZ);
11101115

1111-
if (ReadFile(ptyOut, shellBuffer, EXAMPLE_BUFFER_SZ, &cnt_r,
1116+
if (ReadFile(ptyOut, shellBuffer, WOLFSSHD_SHELL_BUFFER_SZ, &cnt_r,
11121117
NULL) != TRUE) {
11131118
wolfSSH_Log(WS_LOG_INFO,
11141119
"[SSHD] Error reading from pipe for console");
@@ -1166,15 +1171,15 @@ static int SHELL_Subsystem(WOLFSSHD_CONNECTION* conn, WOLFSSH* ssh,
11661171
int stdoutPipe[2], stderrPipe[2];
11671172
pid_t childPid;
11681173

1169-
#ifndef EXAMPLE_BUFFER_SZ
1174+
#ifndef WOLFSSHD_SHELL_BUFFER_SZ
11701175
/* default to try and read max packet size */
1171-
#define EXAMPLE_BUFFER_SZ 32768
1176+
#define WOLFSSHD_SHELL_BUFFER_SZ 32768
11721177
#endif
11731178
#ifndef MAX_IDLE_COUNT
11741179
#define MAX_IDLE_COUNT 2
11751180
#endif
1176-
byte shellBuffer[EXAMPLE_BUFFER_SZ];
1177-
byte channelBuffer[EXAMPLE_BUFFER_SZ];
1181+
byte shellBuffer[WOLFSSHD_SHELL_BUFFER_SZ];
1182+
byte channelBuffer[WOLFSSHD_SHELL_BUFFER_SZ];
11781183
char* forcedCmd;
11791184
int windowFull = 0; /* Contains size of bytes from shellBuffer that did
11801185
* not get passed on to wolfSSH yet. This happens

0 commit comments

Comments
 (0)