On 2025/08/17 15:52, Sergey A. Osokin wrote:
> Hi Rafael,
> 
> On Sun, Aug 17, 2025 at 03:33:29PM +0000, Sergey A. Osokin wrote:
> > On Sun, Aug 17, 2025 at 04:23:14PM +0200, Rafael Sadowski wrote:
> > > On Sat Aug 16, 2025 at 04:48:08PM +0000, Sergey A. Osokin wrote:
> > > > 
> > > > here's the update for the www/nginx port, it fixes the
> > > > CVE-2025-53859 security issue with the product.
> > > 
> > > Could we have patch under patches like we do in all other ports?
> > 
> > Sure, let's me do that.
> > Thank you for the initial review.
> 
> The updated patch is attached to the email.
> Thank you.
> 
> -- 
> Sergey A. Osokin

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/www/nginx/Makefile,v
> diff -u -p -r1.193 Makefile
> --- Makefile  24 Jul 2025 23:20:36 -0000      1.193
> +++ Makefile  17 Aug 2025 15:48:42 -0000
> @@ -21,9 +21,9 @@ COMMENT-stream=             nginx TCP/UDP proxy mod
>  COMMENT-xslt=                nginx XSLT filter module
>  
>  VERSION=     1.28.0
> -REVISION=    1
> -REVISION-njs=                2
> -REVISION-passenger=  2
> +REVISION=    2
> +REVISION-njs=                3
> +REVISION-passenger=  3

unless I'm mistaken about the scope of this, I think you should
probably bump REVISION-mailproxy to 2, and leave the other REVISIONs
alone.

>  DISTNAME=    nginx-${VERSION}
>  CATEGORIES=  www
>  
> Index: patches/patch-src_mail_ngx_mail_handler_c
> ===================================================================
> RCS file: patches/patch-src_mail_ngx_mail_handler_c
> diff -N patches/patch-src_mail_ngx_mail_handler_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_mail_ngx_mail_handler_c 17 Aug 2025 15:48:43 -0000
> @@ -0,0 +1,125 @@
> +Index: src/mail/ngx_mail_handler.c
> +--- src/mail/ngx_mail_handler.c.orig
> ++++ src/mail/ngx_mail_handler.c
> +@@ -523,7 +523,7 @@ ngx_mail_starttls_only(ngx_mail_session_t *s, ngx_conn
> + ngx_int_t
> + ngx_mail_auth_plain(ngx_mail_session_t *s, ngx_connection_t *c, ngx_uint_t 
> n)
> + {
> +-    u_char     *p, *last;
> ++    u_char     *p, *pos, *last;
> +     ngx_str_t  *arg, plain;
> + 
> +     arg = s->args.elts;
> +@@ -555,7 +555,7 @@ ngx_mail_auth_plain(ngx_mail_session_t *s, ngx_connect
> +         return NGX_MAIL_PARSE_INVALID_COMMAND;
> +     }
> + 
> +-    s->login.data = p;
> ++    pos = p;
> + 
> +     while (p < last && *p) { p++; }
> + 
> +@@ -565,7 +565,8 @@ ngx_mail_auth_plain(ngx_mail_session_t *s, ngx_connect
> +         return NGX_MAIL_PARSE_INVALID_COMMAND;
> +     }
> + 
> +-    s->login.len = p++ - s->login.data;
> ++    s->login.len = p++ - pos;
> ++    s->login.data = pos;
> + 
> +     s->passwd.len = last - p;
> +     s->passwd.data = p;
> +@@ -583,24 +584,26 @@ ngx_int_t
> + ngx_mail_auth_login_username(ngx_mail_session_t *s, ngx_connection_t *c,
> +     ngx_uint_t n)
> + {
> +-    ngx_str_t  *arg;
> ++    ngx_str_t  *arg, login;
> + 
> +     arg = s->args.elts;
> + 
> +     ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0,
> +                    "mail auth login username: \"%V\"", &arg[n]);
> + 
> +-    s->login.data = ngx_pnalloc(c->pool, 
> ngx_base64_decoded_length(arg[n].len));
> +-    if (s->login.data == NULL) {
> ++    login.data = ngx_pnalloc(c->pool, 
> ngx_base64_decoded_length(arg[n].len));
> ++    if (login.data == NULL) {
> +         return NGX_ERROR;
> +     }
> + 
> +-    if (ngx_decode_base64(&s->login, &arg[n]) != NGX_OK) {
> ++    if (ngx_decode_base64(&login, &arg[n]) != NGX_OK) {
> +         ngx_log_error(NGX_LOG_INFO, c->log, 0,
> +             "client sent invalid base64 encoding in AUTH LOGIN command");
> +         return NGX_MAIL_PARSE_INVALID_COMMAND;
> +     }
> + 
> ++    s->login = login;
> ++
> +     ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0,
> +                    "mail auth login username: \"%V\"", &s->login);
> + 
> +@@ -611,7 +614,7 @@ ngx_mail_auth_login_username(ngx_mail_session_t *s, ng
> + ngx_int_t
> + ngx_mail_auth_login_password(ngx_mail_session_t *s, ngx_connection_t *c)
> + {
> +-    ngx_str_t  *arg;
> ++    ngx_str_t  *arg, passwd;
> + 
> +     arg = s->args.elts;
> + 
> +@@ -620,18 +623,19 @@ ngx_mail_auth_login_password(ngx_mail_session_t *s, ng
> +                    "mail auth login password: \"%V\"", &arg[0]);
> + #endif
> + 
> +-    s->passwd.data = ngx_pnalloc(c->pool,
> +-                                 ngx_base64_decoded_length(arg[0].len));
> +-    if (s->passwd.data == NULL) {
> ++    passwd.data = ngx_pnalloc(c->pool, 
> ngx_base64_decoded_length(arg[0].len));
> ++    if (passwd.data == NULL) {
> +         return NGX_ERROR;
> +     }
> + 
> +-    if (ngx_decode_base64(&s->passwd, &arg[0]) != NGX_OK) {
> ++    if (ngx_decode_base64(&passwd, &arg[0]) != NGX_OK) {
> +         ngx_log_error(NGX_LOG_INFO, c->log, 0,
> +             "client sent invalid base64 encoding in AUTH LOGIN command");
> +         return NGX_MAIL_PARSE_INVALID_COMMAND;
> +     }
> + 
> ++    s->passwd = passwd;
> ++
> + #if (NGX_DEBUG_MAIL_PASSWD)
> +     ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0,
> +                    "mail auth login password: \"%V\"", &s->passwd);
> +@@ -674,23 +678,25 @@ ngx_int_t
> + ngx_mail_auth_cram_md5(ngx_mail_session_t *s, ngx_connection_t *c)
> + {
> +     u_char     *p, *last;
> +-    ngx_str_t  *arg;
> ++    ngx_str_t  *arg, login;
> + 
> +     arg = s->args.elts;
> + 
> +     ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0,
> +                    "mail auth cram-md5: \"%V\"", &arg[0]);
> + 
> +-    s->login.data = ngx_pnalloc(c->pool, 
> ngx_base64_decoded_length(arg[0].len));
> +-    if (s->login.data == NULL) {
> ++    login.data = ngx_pnalloc(c->pool, 
> ngx_base64_decoded_length(arg[0].len));
> ++    if (login.data == NULL) {
> +         return NGX_ERROR;
> +     }
> + 
> +-    if (ngx_decode_base64(&s->login, &arg[0]) != NGX_OK) {
> ++    if (ngx_decode_base64(&login, &arg[0]) != NGX_OK) {
> +         ngx_log_error(NGX_LOG_INFO, c->log, 0,
> +             "client sent invalid base64 encoding in AUTH CRAM-MD5 command");
> +         return NGX_MAIL_PARSE_INVALID_COMMAND;
> +     }
> ++
> ++    s->login = login;
> + 
> +     p = s->login.data;
> +     last = p + s->login.len;

Reply via email to