mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
Return early with an error instead of returning an incomplete match table.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1467721 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -921,6 +921,16 @@ static int lua_ap_regex(lua_State *L)
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (regex.re_nsub > MODLUA_MAX_REG_MATCH) {
|
||||||
|
lua_pushboolean(L, 0);
|
||||||
|
err = apr_palloc(r->pool, 64);
|
||||||
|
apr_snprintf(err, 64,
|
||||||
|
"regcomp found %d matches; only %d allowed.",
|
||||||
|
regex.re_nsub, MODLUA_MAX_REG_MATCH);
|
||||||
|
lua_pushstring(L, err);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
rv = ap_regexec(®ex, source, MODLUA_MAX_REG_MATCH, matches, 0);
|
rv = ap_regexec(®ex, source, MODLUA_MAX_REG_MATCH, matches, 0);
|
||||||
if (rv == AP_REG_NOMATCH) {
|
if (rv == AP_REG_NOMATCH) {
|
||||||
lua_pushboolean(L, 0);
|
lua_pushboolean(L, 0);
|
||||||
@@ -928,7 +938,7 @@ static int lua_ap_regex(lua_State *L)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
for (i = 0; i <= regex.re_nsub && i <= MODLUA_MAX_REG_MATCH; i++) {
|
for (i = 0; i <= regex.re_nsub; i++) {
|
||||||
lua_pushinteger(L, i);
|
lua_pushinteger(L, i);
|
||||||
if (matches[i].rm_so >= 0 && matches[i].rm_eo >= 0)
|
if (matches[i].rm_so >= 0 && matches[i].rm_eo >= 0)
|
||||||
lua_pushstring(L,
|
lua_pushstring(L,
|
||||||
|
Reference in New Issue
Block a user