提交 ad1b6c33 编写于 作者: K Kozlov Dmitry

cli: fixed crash if password is specified

cli: fixed exit command
上级 f7058be5
...@@ -181,7 +181,7 @@ int cli_process_cmd(struct cli_client_t *cln) ...@@ -181,7 +181,7 @@ int cli_process_cmd(struct cli_client_t *cln)
case CLI_CMD_EXIT: case CLI_CMD_EXIT:
cln->disconnect(cln); cln->disconnect(cln);
case CLI_CMD_FAILED: case CLI_CMD_FAILED:
return -1; return 0;
case CLI_CMD_SYNTAX: case CLI_CMD_SYNTAX:
cli_send(cln, MSG_SYNTAX_ERROR); cli_send(cln, MSG_SYNTAX_ERROR);
return 0; return 0;
...@@ -206,7 +206,7 @@ static void load_config(void) ...@@ -206,7 +206,7 @@ static void load_config(void)
_free(conf_cli_passwd); _free(conf_cli_passwd);
opt = conf_get_opt("cli", "password"); opt = conf_get_opt("cli", "password");
if (opt) if (opt)
conf_cli_passwd = _strdup(conf_cli_passwd); conf_cli_passwd = _strdup(opt);
else else
conf_cli_passwd = NULL; conf_cli_passwd = NULL;
......
...@@ -184,7 +184,7 @@ static int cln_read(struct triton_md_handler_t *h) ...@@ -184,7 +184,7 @@ static int cln_read(struct triton_md_handler_t *h)
drop: drop:
disconnect(cln); disconnect(cln);
return 0; return -1;
} }
static int cln_write(struct triton_md_handler_t *h) static int cln_write(struct triton_md_handler_t *h)
......
...@@ -286,7 +286,7 @@ static int telnet_input_char(struct telnet_client_t *cln, uint8_t 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 (strcmp((char *)cln->cmdline, conf_cli_passwd)) {
if (telnet_send(cln, MSG_AUTH_FAILED, sizeof(MSG_AUTH_FAILED))) if (telnet_send(cln, MSG_AUTH_FAILED, sizeof(MSG_AUTH_FAILED)))
return -1; return -1;
disconnect(cln); cln->disconnect = 1;
return -1; return -1;
} }
cln->auth = 1; cln->auth = 1;
...@@ -473,7 +473,7 @@ static int cln_read(struct triton_md_handler_t *h) ...@@ -473,7 +473,7 @@ static int cln_read(struct triton_md_handler_t *h)
n = read(h->fd, recv_buf, RECV_BUF_SIZE); n = read(h->fd, recv_buf, RECV_BUF_SIZE);
if (n == 0) { if (n == 0) {
disconnect(cln); disconnect(cln);
return 0; return -1;
} }
if (n < 0) { if (n < 0) {
if (errno != EAGAIN) if (errno != EAGAIN)
...@@ -484,11 +484,11 @@ static int cln_read(struct triton_md_handler_t *h) ...@@ -484,11 +484,11 @@ static int cln_read(struct triton_md_handler_t *h)
print_buf(cln->recv_buf + cln->recv_pos, n);*/ print_buf(cln->recv_buf + cln->recv_pos, n);*/
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
if (telnet_input_char(cln, recv_buf[i])) if (telnet_input_char(cln, recv_buf[i]))
return -1; break;
} }
if (cln->disconnect) { if (cln->disconnect) {
disconnect(cln); disconnect(cln);
return 0; return -1;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册