]> err.no Git - varnish/commitdiff
proper errorchecks for regsub syntax.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 27 Jan 2009 12:18:12 +0000 (12:18 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 27 Jan 2009 12:18:12 +0000 (12:18 +0000)
(The recent change that moved the compiler into its own subprocess
eliminates risk that a compiler error causes the management process
to die, you just do not get a sensible syntax error).

Fixes: #417
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3546 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/lib/libvcl/vcc_string.c

index cb87a03f2633daf882f0be8960ce8207cc3bbfc6..c267a8cbc0abdd030a5a85b568af51fb3018550f 100644 (file)
@@ -53,6 +53,8 @@ vcc_regexp(struct tokenlist *tl, int sub)
        int i;
 
        Expect(tl, CSTR);
+       if (tl->err)
+               return (NULL);
        memset(&t, 0, sizeof t);
        i = regcomp(&t, tl->t->dec, REG_EXTENDED | (sub ? 0 : REG_NOSUB));
        if (i != 0) {
@@ -88,6 +90,8 @@ vcc_regsub(struct tokenlist *tl, int all)
        Fb(tl, 0, "VRT_regsub(sp, %d, ", all);
 
        Expect(tl, '(');
+       if (tl->err)
+               return (0);
        vcc_NextToken(tl);
 
        if (!vcc_StringVal(tl)) {
@@ -96,14 +100,20 @@ vcc_regsub(struct tokenlist *tl, int all)
        }
 
        Expect(tl, ',');
+       if (tl->err)
+               return (0);
        vcc_NextToken(tl);
 
        Expect(tl, CSTR);
+       if (tl->err)
+               return (0);
        p = vcc_regexp(tl, 1);
        vcc_NextToken(tl);
        Fb(tl, 0, ", %s, ", p);
 
        Expect(tl, ',');
+       if (tl->err)
+               return (0);
        vcc_NextToken(tl);
 
        if (!vcc_StringVal(tl)) {
@@ -112,6 +122,8 @@ vcc_regsub(struct tokenlist *tl, int all)
        }
 
        Expect(tl, ')');
+       if (tl->err)
+               return (0);
        vcc_NextToken(tl);
        Fb(tl, 0, ")");