Mercurial > hg > nginx-quic
changeset 5824:e7f6991eca47
Core: ngx_regex_compile() error handling fixes.
Now we actually return NGX_ERROR on errors, and provide an error
string for memory allocation errors.
Reported by Markus Linnala.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 08 Sep 2014 21:35:53 +0400 |
parents | 275e35d54626 |
children | 51fe42cc7876 |
files | src/core/ngx_regex.c |
diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_regex.c +++ b/src/core/ngx_regex.c @@ -149,7 +149,7 @@ ngx_regex_compile(ngx_regex_compile_t *r rc->regex = ngx_pcalloc(rc->pool, sizeof(ngx_regex_t)); if (rc->regex == NULL) { - return NGX_ERROR; + goto nomem; } rc->regex->code = re; @@ -159,7 +159,7 @@ ngx_regex_compile(ngx_regex_compile_t *r if (ngx_pcre_studies != NULL) { elt = ngx_list_push(ngx_pcre_studies); if (elt == NULL) { - return NGX_ERROR; + goto nomem; } elt->regex = rc->regex; @@ -204,7 +204,15 @@ failed: rc->err.len = ngx_snprintf(rc->err.data, rc->err.len, p, &rc->pattern, n) - rc->err.data; - return NGX_OK; + return NGX_ERROR; + +nomem: + + rc->err.len = ngx_snprintf(rc->err.data, rc->err.len, + "regex \"%V\" compilation failed: no memory", + &rc->pattern) + - rc->err.data; + return NGX_ERROR; }