Mercurial > hg > nginx
diff src/mail/ngx_mail_auth_http_module.c @ 1405:fdd064faf26a
escape " ", "%", and %00-%1F in login and password
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 20 Aug 2007 09:50:53 +0000 |
parents | 86acec04b8b0 |
children | 59e1caf2be94 |
line wrap: on
line diff
--- a/src/mail/ngx_mail_auth_http_module.c Wed Aug 15 20:53:30 2007 +0000 +++ b/src/mail/ngx_mail_auth_http_module.c Mon Aug 20 09:50:53 2007 +0000 @@ -1251,18 +1251,10 @@ static ngx_int_t ngx_mail_auth_http_escape(ngx_pool_t *pool, ngx_str_t *text, ngx_str_t *escaped) { - u_char ch, *p; - ngx_uint_t i, n; - - n = 0; + u_char *p; + uintptr_t n; - for (i = 0; i < text->len; i++) { - ch = text->data[i]; - - if (ch == CR || ch == LF) { - n++; - } - } + n = ngx_escape_uri(NULL, text->data, text->len, NGX_ESCAPE_MAIL_AUTH); if (n == 0) { *escaped = *text; @@ -1276,27 +1268,9 @@ return NGX_ERROR; } - escaped->data = p; - - for (i = 0; i < text->len; i++) { - ch = text->data[i]; + (void) ngx_escape_uri(p, text->data, text->len, NGX_ESCAPE_MAIL_AUTH); - if (ch == CR) { - *p++ = '%'; - *p++ = '0'; - *p++ = 'D'; - continue; - } - - if (ch == LF) { - *p++ = '%'; - *p++ = '0'; - *p++ = 'A'; - continue; - } - - *p++ = ch; - } + escaped->data = p; return NGX_OK; }