Exit after compilation of invalid func:result
authorNick Wellnhofer <wellnhofer@aevum.de>
Wed, 15 Aug 2012 19:09:19 +0000 (21:09 +0200)
committerDaniel Veillard <veillard@redhat.com>
Tue, 4 Sep 2012 06:54:48 +0000 (14:54 +0800)
Second part of bug #680920.

libexslt/functions.c
tests/docs/bug-174.xml [new file with mode: 0644]
tests/general/bug-174.err [new file with mode: 0644]
tests/general/bug-174.out [new file with mode: 0644]
tests/general/bug-174.xsl [new file with mode: 0644]

index e7bb2f1..159e93d 100644 (file)
@@ -562,6 +562,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst,
        xsltGenericError(xsltGenericErrorContext,
                         "exsltFuncResultElem: only xsl:fallback is "
                         "allowed to follow func:result\n");
+       style->errors++;
        return (NULL);
     }
     /* it is an error for a func:result element to not be a descendant
@@ -578,6 +579,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst,
            xsltGenericError(xsltGenericErrorContext,
                             "func:result element not a descendant "
                             "of a func:function\n");
+           style->errors++;
            return (NULL);
        }
        if ((test->ns != NULL) &&
@@ -589,6 +591,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst,
                xsltGenericError(xsltGenericErrorContext,
                                 "func:result element not allowed within"
                                 " another func:result element\n");
+               style->errors++;
                return (NULL);
            }
        }
@@ -598,6 +601,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst,
            xsltGenericError(xsltGenericErrorContext,
                             "func:result element not allowed within"
                             " a variable binding element\n");
+            style->errors++;
            return (NULL);
        }
     }
@@ -611,6 +615,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst,
        xsltPrintErrorContext(NULL, NULL, NULL);
         xsltGenericError(xsltGenericErrorContext,
                          "exsltFuncResultComp : malloc failed\n");
+        style->errors++;
         return (NULL);
     }
     memset(ret, 0, sizeof(exsltFuncResultPreComp));
diff --git a/tests/docs/bug-174.xml b/tests/docs/bug-174.xml
new file mode 100644 (file)
index 0000000..69d62f2
--- /dev/null
@@ -0,0 +1 @@
+<doc/>
diff --git a/tests/general/bug-174.err b/tests/general/bug-174.err
new file mode 100644 (file)
index 0000000..bc790a3
--- /dev/null
@@ -0,0 +1 @@
+exsltFuncResultElem: only xsl:fallback is allowed to follow func:result
diff --git a/tests/general/bug-174.out b/tests/general/bug-174.out
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/general/bug-174.xsl b/tests/general/bug-174.xsl
new file mode 100644 (file)
index 0000000..51991ef
--- /dev/null
@@ -0,0 +1,18 @@
+<xsl:stylesheet
+       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+       xmlns:func = "http://exslt.org/functions"
+       version="1.0" extension-element-prefixes="func">
+
+<func:function name="func:uaf">
+       <func:result/>
+       <func:result/>
+</func:function>
+
+<xsl:template match="/">
+        <result>
+               <xsl:value-of select="func:uaf()"/>
+        </result>
+</xsl:template>
+
+</xsl:stylesheet>
+