Commit 24e18af8 authored by Geoff Simmons's avatar Geoff Simmons

sub() method and function fail if rewrite is NULL

parent c89737b8
......@@ -69,6 +69,12 @@ varnish v1 -vcl {
= b.sub(req.http.undef, "x", "text undef");
set resp.http.undeftextf
= re2.sub("b", req.http.undef, "x", "text undef");
# Undefined rewrite
set resp.http.undefrewrite
= b.sub("b", req.http.undef, "rewrite undef");
set resp.http.undefrewritef
= re2.sub("b", "b", req.http.undef, "rewrite undef");
}
} -start
......@@ -108,6 +114,9 @@ client c1 {
expect resp.http.undeftext == "text undef"
expect resp.http.undeftextf == "text undef"
expect resp.http.undefrewrite == "rewrite undef"
expect resp.http.undefrewritef == "rewrite undef"
} -run
logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" {
......@@ -119,5 +128,9 @@ logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" {
expect * = VCL_Error "^vmod re2 error: b.sub.text=<undefined>, fallback=.text undef..: text is undefined$"
expect * = VCL_Error "^vmod re2 error: re2.sub.pattern=.b., text=<undefined>, fallback=.text undef..: text is undefined$"
expect * = VCL_Error "^vmod re2 error: b.sub.text=.b., rewrite=<undefined>, fallback=.rewrite undef..: rewrite is undefined$"
expect * = VCL_Error "^vmod re2 error: re2.sub.pattern=.b., text=.b., rewrite=<undefined>, fallback=.rewrite undef..: rewrite is undefined$"
expect * = End
} -run
......@@ -418,8 +418,6 @@ vmod_regex_namedref(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING name,
#undef ERR_PREFIX
#define ERR_PREFIX "%s.sub(text=\"%s\", rewrite=\"%s\", fallback=\"%s\"): "
VCL_STRING
vmod_regex_sub(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text,
VCL_STRING rewrite, VCL_STRING fallback)
......@@ -435,14 +433,16 @@ vmod_regex_sub(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text,
"text is undefined", re->vcl_name, fallback);
return fallback;
}
if (rewrite == NULL)
rewrite = "";
if (rewrite == NULL) {
VERR(ctx, "%s.sub(text=\"%s\", rewrite=<undefined>, "
"fallback=\"%s\"): rewrite is undefined", re->vcl_name,
text, fallback);
return fallback;
}
return sub(ctx, re->vre2, text, rewrite, fallback);
}
#undef ERR_PREFIX
/* Object set */
VCL_VOID
......@@ -755,8 +755,12 @@ vmod_sub(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
"fallback=\"%s\"): text is undefined", pattern, fallback);
return fallback;
}
if (rewrite == NULL)
rewrite = "";
if (rewrite == NULL) {
VERR(ctx, "re2.sub(pattern=\"%s\", text=\"%s\", "
"rewrite=<undefined>, fallback=\"%s\"): "
"rewrite is undefined", pattern, text, fallback);
return fallback;
}
if ((err = vre2_init(&vre2, pattern, utf8, posix_syntax, longest_match,
max_mem, literal, never_nl, dot_nl, never_capture,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment