]> err.no Git - varnish/commitdiff
Properly quote the ban descriptions.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 18 Jan 2009 14:54:41 +0000 (14:54 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 18 Jan 2009 14:54:41 +0000 (14:54 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3516 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache_ban.c
varnish-cache/bin/varnishtest/tests/c00021.vtc

index 1c0466d8bae506183346e950438a895a2de48050..f97a571beae5c315c0c7d22b951c730bd79de148 100644 (file)
@@ -215,6 +215,7 @@ ban_parse_test(struct cli *cli, struct ban *b, const char *a1, const char *a2, c
 {
        struct ban_test *bt;
        char buf[512];
+       struct vsb *sb;
        int i;
 
        CHECK_OBJ_NOTNULL(b, BAN_MAGIC);
@@ -253,8 +254,15 @@ ban_parse_test(struct cli *cli, struct ban *b, const char *a1, const char *a2, c
        }
 
         /* XXX: proper quoting */
-       asprintf(&bt->test, "%s %s \"%s\"", a1, a2, a3);
-
+       sb = vsb_newauto();
+       XXXAN(sb);
+       vsb_printf(sb, "%s %s ", a1, a2);
+       vsb_quote(sb, a3, 0);
+       vsb_finish(sb);
+       AZ(vsb_overflowed(sb));
+       bt->test = strdup(vsb_data(sb));
+       XXXAN(bt->test);
+       vsb_delete(sb);
        return (0);
 }
 
index a222c87f891fa2777a90cc3ece4c3bb7b42624e7..e4e305d0ac425f03c83336949e2a288e9507e078 100644 (file)
@@ -28,8 +28,8 @@ varnish v1 -clierr 104 "purge foo bar"
 varnish v1 -clierr 106 "purge a b c && a"
 varnish v1 -clierr 106 "purge a b c && a b"
 varnish v1 -clierr 106 "purge a b c || a b c"
-varnish v1 -cli "purge req.url ~ foo"
-# varnish v1 -cli "purge req.url ~ foo && req.url ~ bar"
+varnish v1 -cliok "purge req.url ~ foo && req.url ~ \"[ o]\""
+varnish v1 -cliok "purge.list"
 
 client c1 {
        txreq -url "/foo"