Commit 2b39d946 authored by Geoff Simmons's avatar Geoff Simmons

add tests for regex compile failure in the set object interface

parent be834827
......@@ -4,6 +4,8 @@ varnishtest "regex compilation failure"
varnish v1 -vcl { backend b { .host="${bad_ip}"; } } -start
# regex object
varnish v1 -errvcl {vmod re2 error: Cannot compile '(' in bad constructor: missing ): (} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
......@@ -274,6 +276,310 @@ varnish v1 -vcl {
}
}
# set object
varnish v1 -errvcl {vmod re2 error: bad.add("("): Cannot compile '(': missing ): (} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("(");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("a\1"): Cannot compile 'a\1': invalid escape sequence: \1} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("a\1");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("a[x"): Cannot compile 'a[x': missing ]: [x} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("a[x");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("a[z-a]"): Cannot compile 'a[z-a]': invalid character class range: z-a} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("a[z-a]");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("a[[:foobar:]]"): Cannot compile 'a[[:foobar:]]': invalid character class range: [:foobar:]} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("a[[:foobar:]]");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("a(b"): Cannot compile 'a(b': missing ): a(b} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("a(b");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("a\"): Cannot compile 'a\': trailing \} {
#"
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("a\"); #"
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set();
good.add("[a-b-c]");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("[a-b-c]"): Cannot compile '[a-b-c]': invalid character class range: -c} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set(posix_syntax=true);
bad.add("[a-b-c]");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set();
good.add("\Qabc\E");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("\Qabc\E"): Cannot compile '\Qabc\E': invalid escape sequence: \Q} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set(posix_syntax=true);
bad.add("\Qabc\E");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set();
good.add("(?:a)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(?:a)"): Cannot compile '(?:a)': no argument for repetition operator: ?} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set(posix_syntax=true);
bad.add("(?:a)");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set();
good.add("(?P<name>a)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(?P<name>a)"): Cannot compile '(?P<name>a)': no argument for repetition operator: ?} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set(posix_syntax=true);
bad.add("(?P<name>a)");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true);
good.add("(a++)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(a++)"): Cannot compile '(a++)': bad repetition operator: ++} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("(a++)");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true);
good.add("(a**)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(a**)"): Cannot compile '(a**)': bad repetition operator: **} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("(a**)");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true);
good.add("(a?*)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(a?*)"): Cannot compile '(a?*)': bad repetition operator: ?*} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("(a?*)");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true);
good.add("(a+*)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(a+*)"): Cannot compile '(a+*)': bad repetition operator: +*} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("(a+*)");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true);
good.add("(a{1}*)");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("(a{1}*)"): Cannot compile '(a{1}*)': bad repetition operator: {1}*} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set();
bad.add("(a{1}*)");
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("\d \s \w \D \S \W"): Cannot compile '\d \s \w \D \S \W': invalid escape sequence: \d} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set(posix_syntax=true);
bad.add("\d \s \w \D \S \W");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true, perl_classes=true);
good.add("\d \s \w \D \S \W");
good.compile();
}
}
varnish v1 -errvcl {vmod re2 error: bad.add("\b \B"): Cannot compile '\b \B': invalid escape sequence: \b} {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new bad = re2.set(posix_syntax=true);
bad.add("\b \B");
}
}
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new good = re2.set(posix_syntax=true, word_boundary=true);
good.add("\b \B");
good.compile();
}
}
# Function interface
varnish v1 -vcl {
......
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