Mercurial > hg > nginx-quic
view src/mail/ngx_mail_imap_module.h @ 8462:ccdf83bee8c1
Mail: fixed backslash handling in IMAP literals.
Previously, s->backslash was set if any of the arguments was a quoted
string with a backslash character. After successful command parsing
this resulted in all arguments being filtered to remove backslashes.
This is, however, incorrect, as backslashes should not be removed from
IMAP literals. For example:
S: * OK IMAP4 ready
C: a01 login {9}
S: + OK
C: user\name "pass\"word"
S: * BAD internal server error
resulted in "Auth-User: username" instead of "Auth-User: user\name"
as it should.
Fix is to apply backslash filtering on per-argument basis during parsing.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 19 May 2021 03:13:23 +0300 |
parents | d620f497c50f |
children |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGX_MAIL_IMAP_MODULE_H_INCLUDED_ #define _NGX_MAIL_IMAP_MODULE_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_mail.h> typedef struct { size_t client_buffer_size; ngx_str_t capability; ngx_str_t starttls_capability; ngx_str_t starttls_only_capability; ngx_uint_t auth_methods; ngx_array_t capabilities; } ngx_mail_imap_srv_conf_t; void ngx_mail_imap_init_session(ngx_mail_session_t *s, ngx_connection_t *c); void ngx_mail_imap_init_protocol(ngx_event_t *rev); void ngx_mail_imap_auth_state(ngx_event_t *rev); ngx_int_t ngx_mail_imap_parse_command(ngx_mail_session_t *s); extern ngx_module_t ngx_mail_imap_module; #endif /* _NGX_MAIL_IMAP_MODULE_H_INCLUDED_ */