mirror of
https://github.com/clearml/dropbear
synced 2025-01-31 02:46:58 +00:00
sync_git_2024.86 tag/DROPBEAR_2024.86
This commit is contained in:
parent
af3488e293
commit
07f1f1d5f9
@ -69,7 +69,8 @@ void read_config_file(char* filename, FILE* config_file, cli_runopts* options) {
|
|||||||
while (buf_getline(buf, config_file) == DROPBEAR_SUCCESS) {
|
while (buf_getline(buf, config_file) == DROPBEAR_SUCCESS) {
|
||||||
char* commentStart = NULL;
|
char* commentStart = NULL;
|
||||||
cfg_option cfg_opt;
|
cfg_option cfg_opt;
|
||||||
int found, i;
|
int found;
|
||||||
|
size_t i;
|
||||||
/* Update line number counter. */
|
/* Update line number counter. */
|
||||||
linenum++;
|
linenum++;
|
||||||
|
|
||||||
|
@ -317,7 +317,8 @@ static void check_close(struct Channel *channel) {
|
|||||||
|
|
||||||
if ((channel->recv_eof && !write_pending(channel))
|
if ((channel->recv_eof && !write_pending(channel))
|
||||||
/* have a server "session" and child has exited */
|
/* have a server "session" and child has exited */
|
||||||
|| (channel->type->check_close && close_allowed)) {
|
|| (channel->writefd != FD_UNINIT
|
||||||
|
&& channel->type->check_close && close_allowed)) {
|
||||||
close_chan_fd(channel, channel->writefd, SHUT_WR);
|
close_chan_fd(channel, channel->writefd, SHUT_WR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,7 +337,8 @@ static int checkusername(const char *username, unsigned int userlen) {
|
|||||||
if (!ses.authstate.pw_name) {
|
if (!ses.authstate.pw_name) {
|
||||||
TRACE(("leave checkusername: user '%s' doesn't exist", username))
|
TRACE(("leave checkusername: user '%s' doesn't exist", username))
|
||||||
dropbear_log(LOG_WARNING,
|
dropbear_log(LOG_WARNING,
|
||||||
"Login attempt for nonexistent user");
|
"Login attempt for nonexistent user from %s",
|
||||||
|
svr_ses.addrstring);
|
||||||
ses.authstate.checkusername_failed = 1;
|
ses.authstate.checkusername_failed = 1;
|
||||||
return DROPBEAR_FAILURE;
|
return DROPBEAR_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ static void main_noinetd(int argc, char ** argv, const char* multipath) {
|
|||||||
|
|
||||||
if (ses.exitflag) {
|
if (ses.exitflag) {
|
||||||
unlink(svr_opts.pidfile);
|
unlink(svr_opts.pidfile);
|
||||||
dropbear_exit("Terminated by signal");
|
dropbear_close("Terminated by signal");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (val == 0) {
|
if (val == 0) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
|
|
||||||
#ifndef DROPBEAR_VERSION
|
#ifndef DROPBEAR_VERSION
|
||||||
#define DROPBEAR_VERSION "2024.85"
|
#define DROPBEAR_VERSION "2024.86"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* IDENT_VERSION_PART is the optional part after "SSH-2.0-dropbear". Refer to RFC4253 for requirements. */
|
/* IDENT_VERSION_PART is the optional part after "SSH-2.0-dropbear". Refer to RFC4253 for requirements. */
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
attrs==21.2.0
|
attrs==21.2.0
|
||||||
iniconfig==1.1.1
|
iniconfig==2.0.0
|
||||||
packaging==21.0
|
packaging==24.1
|
||||||
pluggy==1.0.0
|
pluggy==1.5.0
|
||||||
py==1.10.0
|
psutil==6.0.0
|
||||||
pyparsing==2.4.7
|
pyparsing==2.4.7
|
||||||
pytest==6.2.5
|
pytest==8.3.2
|
||||||
toml==0.10.2
|
toml==0.10.2
|
||||||
psutil==5.9.0
|
asyncssh==2.17.0
|
||||||
|
@ -69,9 +69,9 @@ def test_bg_sleep(request, fd, dropbear):
|
|||||||
|
|
||||||
|
|
||||||
def test_idle(request, dropbear):
|
def test_idle(request, dropbear):
|
||||||
# Idle test, -I 1 should make it return before the 2 second timeout
|
# Idle test, -I 1 should make it return before the 5 second timeout
|
||||||
r = dbclient(request, "-I", "1", "echo zong; sleep 10",
|
r = dbclient(request, "-I", "1", "echo zong; sleep 10",
|
||||||
capture_output=True, timeout=2, text=True)
|
capture_output=True, timeout=5, text=True)
|
||||||
r.check_returncode()
|
r.check_returncode()
|
||||||
assert r.stdout.rstrip() == "zong"
|
assert r.stdout.rstrip() == "zong"
|
||||||
|
|
||||||
|
34
test/test_concurrent.py
Normal file
34
test/test_concurrent.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
"""
|
||||||
|
Tests opening and closing several (up to 4) channels concurrently.
|
||||||
|
"""
|
||||||
|
from test_dropbear import *
|
||||||
|
|
||||||
|
import asyncssh
|
||||||
|
import asyncio
|
||||||
|
import random
|
||||||
|
|
||||||
|
async def run(addr, port):
|
||||||
|
async with asyncssh.connect(addr, port = port) as conn:
|
||||||
|
|
||||||
|
chans = []
|
||||||
|
MAX=4
|
||||||
|
|
||||||
|
for x in range(10000):
|
||||||
|
if len(chans) < MAX:
|
||||||
|
pipes = await conn.open_session(command = "df")
|
||||||
|
chans.append(pipes)
|
||||||
|
l = len(chans)
|
||||||
|
print(f" add, len {l}")
|
||||||
|
|
||||||
|
if random.random() < 0.2:
|
||||||
|
i = random.randrange(0, len(chans))
|
||||||
|
l = len(chans)
|
||||||
|
print(f" del {i}/{l}")
|
||||||
|
del chans[i]
|
||||||
|
|
||||||
|
def test_concurrent(request, dropbear):
|
||||||
|
opt = request.config.option
|
||||||
|
host = opt.remote or LOCALADDR
|
||||||
|
port = int(opt.port)
|
||||||
|
|
||||||
|
asyncio.run(run(host, port))
|
Loading…
Reference in New Issue
Block a user