mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
Mail: removed dead s->arg_start handling.
As discussed in the previous change, s->arg_start handling in the "done" labels of ngx_mail_pop3_parse_command(), ngx_mail_imap_parse_command(), and ngx_mail_smtp_parse_command() is wrong: s->arg_start cannot be set there, as it is handled and cleared on all code paths where the "done" labels are reached. The relevant code is dead and now removed.
This commit is contained in:
parent
3c660ef59b
commit
fabe28259f
@ -238,7 +238,6 @@ typedef struct {
|
|||||||
ngx_uint_t state;
|
ngx_uint_t state;
|
||||||
u_char *cmd_start;
|
u_char *cmd_start;
|
||||||
u_char *arg_start;
|
u_char *arg_start;
|
||||||
u_char *arg_end;
|
|
||||||
ngx_uint_t literal_len;
|
ngx_uint_t literal_len;
|
||||||
} ngx_mail_session_t;
|
} ngx_mail_session_t;
|
||||||
|
|
||||||
|
@ -124,10 +124,8 @@ ngx_mail_pop3_parse_command(ngx_mail_session_t *s)
|
|||||||
break;
|
break;
|
||||||
case CR:
|
case CR:
|
||||||
state = sw_almost_done;
|
state = sw_almost_done;
|
||||||
s->arg_end = p;
|
|
||||||
break;
|
break;
|
||||||
case LF:
|
case LF:
|
||||||
s->arg_end = p;
|
|
||||||
goto done;
|
goto done;
|
||||||
default:
|
default:
|
||||||
if (s->args.nelts <= 2) {
|
if (s->args.nelts <= 2) {
|
||||||
@ -202,17 +200,6 @@ ngx_mail_pop3_parse_command(ngx_mail_session_t *s)
|
|||||||
done:
|
done:
|
||||||
|
|
||||||
s->buffer->pos = p + 1;
|
s->buffer->pos = p + 1;
|
||||||
|
|
||||||
if (s->arg_start) {
|
|
||||||
arg = ngx_array_push(&s->args);
|
|
||||||
if (arg == NULL) {
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
arg->len = s->arg_end - s->arg_start;
|
|
||||||
arg->data = s->arg_start;
|
|
||||||
s->arg_start = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
s->state = (s->command != NGX_POP3_AUTH) ? sw_start : sw_argument;
|
s->state = (s->command != NGX_POP3_AUTH) ? sw_start : sw_argument;
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
@ -220,7 +207,6 @@ done:
|
|||||||
invalid:
|
invalid:
|
||||||
|
|
||||||
s->state = sw_invalid;
|
s->state = sw_invalid;
|
||||||
s->arg_start = NULL;
|
|
||||||
|
|
||||||
/* skip invalid command till LF */
|
/* skip invalid command till LF */
|
||||||
|
|
||||||
@ -436,10 +422,8 @@ ngx_mail_imap_parse_command(ngx_mail_session_t *s)
|
|||||||
break;
|
break;
|
||||||
case CR:
|
case CR:
|
||||||
state = sw_almost_done;
|
state = sw_almost_done;
|
||||||
s->arg_end = p;
|
|
||||||
break;
|
break;
|
||||||
case LF:
|
case LF:
|
||||||
s->arg_end = p;
|
|
||||||
goto done;
|
goto done;
|
||||||
case '"':
|
case '"':
|
||||||
if (s->args.nelts <= 2) {
|
if (s->args.nelts <= 2) {
|
||||||
@ -614,22 +598,6 @@ ngx_mail_imap_parse_command(ngx_mail_session_t *s)
|
|||||||
done:
|
done:
|
||||||
|
|
||||||
s->buffer->pos = p + 1;
|
s->buffer->pos = p + 1;
|
||||||
|
|
||||||
if (s->arg_start) {
|
|
||||||
arg = ngx_array_push(&s->args);
|
|
||||||
if (arg == NULL) {
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
arg->len = s->arg_end - s->arg_start;
|
|
||||||
arg->data = s->arg_start;
|
|
||||||
|
|
||||||
s->arg_start = NULL;
|
|
||||||
s->cmd_start = NULL;
|
|
||||||
s->quoted = 0;
|
|
||||||
s->no_sync_literal = 0;
|
|
||||||
s->literal_len = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
s->state = (s->command != NGX_IMAP_AUTHENTICATE) ? sw_start : sw_argument;
|
s->state = (s->command != NGX_IMAP_AUTHENTICATE) ? sw_start : sw_argument;
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
@ -637,7 +605,6 @@ done:
|
|||||||
invalid:
|
invalid:
|
||||||
|
|
||||||
s->state = sw_start;
|
s->state = sw_start;
|
||||||
s->arg_start = NULL;
|
|
||||||
s->quoted = 0;
|
s->quoted = 0;
|
||||||
s->backslash = 0;
|
s->backslash = 0;
|
||||||
s->no_sync_literal = 0;
|
s->no_sync_literal = 0;
|
||||||
@ -786,10 +753,8 @@ ngx_mail_smtp_parse_command(ngx_mail_session_t *s)
|
|||||||
break;
|
break;
|
||||||
case CR:
|
case CR:
|
||||||
state = sw_almost_done;
|
state = sw_almost_done;
|
||||||
s->arg_end = p;
|
|
||||||
break;
|
break;
|
||||||
case LF:
|
case LF:
|
||||||
s->arg_end = p;
|
|
||||||
goto done;
|
goto done;
|
||||||
default:
|
default:
|
||||||
if (s->args.nelts <= 10) {
|
if (s->args.nelts <= 10) {
|
||||||
@ -849,17 +814,6 @@ ngx_mail_smtp_parse_command(ngx_mail_session_t *s)
|
|||||||
done:
|
done:
|
||||||
|
|
||||||
s->buffer->pos = p + 1;
|
s->buffer->pos = p + 1;
|
||||||
|
|
||||||
if (s->arg_start) {
|
|
||||||
arg = ngx_array_push(&s->args);
|
|
||||||
if (arg == NULL) {
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
arg->len = s->arg_end - s->arg_start;
|
|
||||||
arg->data = s->arg_start;
|
|
||||||
s->arg_start = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
s->state = (s->command != NGX_SMTP_AUTH) ? sw_start : sw_argument;
|
s->state = (s->command != NGX_SMTP_AUTH) ? sw_start : sw_argument;
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
@ -867,7 +821,6 @@ done:
|
|||||||
invalid:
|
invalid:
|
||||||
|
|
||||||
s->state = sw_invalid;
|
s->state = sw_invalid;
|
||||||
s->arg_start = NULL;
|
|
||||||
|
|
||||||
/* skip invalid command till LF */
|
/* skip invalid command till LF */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user