From ad1b6c33dc19ffd4ca87cc6c787f0f670c307cfc Mon Sep 17 00:00:00 2001 From: Kozlov Dmitry Date: Thu, 30 Dec 2010 13:53:40 +0300 Subject: cli: fixed crash if password is specified cli: fixed exit command --- accel-pptpd/cli/cli.c | 4 ++-- accel-pptpd/cli/tcp.c | 2 +- accel-pptpd/cli/telnet.c | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/accel-pptpd/cli/cli.c b/accel-pptpd/cli/cli.c index 048809c..ef168de 100644 --- a/accel-pptpd/cli/cli.c +++ b/accel-pptpd/cli/cli.c @@ -181,7 +181,7 @@ int cli_process_cmd(struct cli_client_t *cln) case CLI_CMD_EXIT: cln->disconnect(cln); case CLI_CMD_FAILED: - return -1; + return 0; case CLI_CMD_SYNTAX: cli_send(cln, MSG_SYNTAX_ERROR); return 0; @@ -206,7 +206,7 @@ static void load_config(void) _free(conf_cli_passwd); opt = conf_get_opt("cli", "password"); if (opt) - conf_cli_passwd = _strdup(conf_cli_passwd); + conf_cli_passwd = _strdup(opt); else conf_cli_passwd = NULL; diff --git a/accel-pptpd/cli/tcp.c b/accel-pptpd/cli/tcp.c index a2f9e07..260225f 100644 --- a/accel-pptpd/cli/tcp.c +++ b/accel-pptpd/cli/tcp.c @@ -184,7 +184,7 @@ static int cln_read(struct triton_md_handler_t *h) drop: disconnect(cln); - return 0; + return -1; } static int cln_write(struct triton_md_handler_t *h) diff --git a/accel-pptpd/cli/telnet.c b/accel-pptpd/cli/telnet.c index 751426d..558af89 100644 --- a/accel-pptpd/cli/telnet.c +++ b/accel-pptpd/cli/telnet.c @@ -286,7 +286,7 @@ static int telnet_input_char(struct telnet_client_t *cln, uint8_t c) if (strcmp((char *)cln->cmdline, conf_cli_passwd)) { if (telnet_send(cln, MSG_AUTH_FAILED, sizeof(MSG_AUTH_FAILED))) return -1; - disconnect(cln); + cln->disconnect = 1; return -1; } cln->auth = 1; @@ -473,7 +473,7 @@ static int cln_read(struct triton_md_handler_t *h) n = read(h->fd, recv_buf, RECV_BUF_SIZE); if (n == 0) { disconnect(cln); - return 0; + return -1; } if (n < 0) { if (errno != EAGAIN) @@ -484,11 +484,11 @@ static int cln_read(struct triton_md_handler_t *h) print_buf(cln->recv_buf + cln->recv_pos, n);*/ for (i = 0; i < n; i++) { if (telnet_input_char(cln, recv_buf[i])) - return -1; + break; } if (cln->disconnect) { disconnect(cln); - return 0; + return -1; } } -- cgit v1.2.3