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 { ...@@ -69,6 +69,12 @@ varnish v1 -vcl {
= b.sub(req.http.undef, "x", "text undef"); = b.sub(req.http.undef, "x", "text undef");
set resp.http.undeftextf set resp.http.undeftextf
= re2.sub("b", req.http.undef, "x", "text undef"); = 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 } -start
...@@ -108,6 +114,9 @@ client c1 { ...@@ -108,6 +114,9 @@ client c1 {
expect resp.http.undeftext == "text undef" expect resp.http.undeftext == "text undef"
expect resp.http.undeftextf == "text undef" expect resp.http.undeftextf == "text undef"
expect resp.http.undefrewrite == "rewrite undef"
expect resp.http.undefrewritef == "rewrite undef"
} -run } -run
logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" { 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" { ...@@ -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: 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: 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 expect * = End
} -run } -run
...@@ -418,8 +418,6 @@ vmod_regex_namedref(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING name, ...@@ -418,8 +418,6 @@ vmod_regex_namedref(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING name,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "%s.sub(text=\"%s\", rewrite=\"%s\", fallback=\"%s\"): "
VCL_STRING VCL_STRING
vmod_regex_sub(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text, vmod_regex_sub(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text,
VCL_STRING rewrite, VCL_STRING fallback) VCL_STRING rewrite, VCL_STRING fallback)
...@@ -435,14 +433,16 @@ vmod_regex_sub(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text, ...@@ -435,14 +433,16 @@ vmod_regex_sub(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text,
"text is undefined", re->vcl_name, fallback); "text is undefined", re->vcl_name, fallback);
return fallback; return fallback;
} }
if (rewrite == NULL) if (rewrite == NULL) {
rewrite = ""; 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); return sub(ctx, re->vre2, text, rewrite, fallback);
} }
#undef ERR_PREFIX
/* Object set */ /* Object set */
VCL_VOID VCL_VOID
...@@ -755,8 +755,12 @@ vmod_sub(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite, ...@@ -755,8 +755,12 @@ vmod_sub(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
"fallback=\"%s\"): text is undefined", pattern, fallback); "fallback=\"%s\"): text is undefined", pattern, fallback);
return fallback; return fallback;
} }
if (rewrite == NULL) if (rewrite == NULL) {
rewrite = ""; 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, if ((err = vre2_init(&vre2, pattern, utf8, posix_syntax, longest_match,
max_mem, literal, never_nl, dot_nl, never_capture, 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