author | Petr Sumbera <petr.sumbera@oracle.com> |
Mon, 26 Aug 2013 13:00:27 -0700 | |
branch | s11u1-sru |
changeset 2748 | 76a9a8bd58ae |
permissions | -rw-r--r-- |
2748
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
1 |
From dc11b6b379a882418093ecc8adf11f6166682e8d Mon Sep 17 00:00:00 2001 |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
2 |
From: Nick Wellnhofer <[email protected]> |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
3 |
Date: Sun, 21 Oct 2012 17:02:25 +0000 |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
4 |
Subject: Fix crash with empty xsl:key/@match attribute |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
5 |
|
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
6 |
See https://bugzilla.gnome.org/show_bug.cgi?id=685328 |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
7 |
|
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
8 |
Also improve some xsl:key error messages. |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
9 |
--- |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
10 |
diff --git a/libxslt/keys.c b/libxslt/keys.c |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
11 |
index a995338..b8f1455 100644 |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
12 |
--- a/libxslt/keys.c |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
13 |
+++ b/libxslt/keys.c |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
14 |
@@ -312,8 +312,8 @@ xsltAddKey(xsltStylesheetPtr style, const xmlChar *name, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
15 |
end = skipPredicate(match, end); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
16 |
if (end <= 0) { |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
17 |
xsltTransformError(NULL, style, inst, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
18 |
- "key pattern is malformed: %s", |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
19 |
- key->match); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
20 |
+ "xsl:key : 'match' pattern is malformed: %s", |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
21 |
+ key->match); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
22 |
if (style != NULL) style->errors++; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
23 |
goto error; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
24 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
25 |
@@ -322,7 +322,7 @@ xsltAddKey(xsltStylesheetPtr style, const xmlChar *name, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
26 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
27 |
if (current == end) { |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
28 |
xsltTransformError(NULL, style, inst, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
29 |
- "key pattern is empty\n"); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
30 |
+ "xsl:key : 'match' pattern is empty\n"); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
31 |
if (style != NULL) style->errors++; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
32 |
goto error; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
33 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
34 |
@@ -345,6 +345,12 @@ xsltAddKey(xsltStylesheetPtr style, const xmlChar *name, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
35 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
36 |
current = end; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
37 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
38 |
+ if (pattern == NULL) { |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
39 |
+ xsltTransformError(NULL, style, inst, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
40 |
+ "xsl:key : 'match' pattern is empty\n"); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
41 |
+ if (style != NULL) style->errors++; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
42 |
+ goto error; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
43 |
+ } |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
44 |
#ifdef WITH_XSLT_DEBUG_KEYS |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
45 |
xsltGenericDebug(xsltGenericDebugContext, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
46 |
" resulting pattern %s\n", pattern); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
47 |
@@ -359,14 +365,14 @@ xsltAddKey(xsltStylesheetPtr style, cons |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
48 |
key->comp = xsltXPathCompile(style, pattern); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
49 |
if (key->comp == NULL) { |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
50 |
xsltTransformError(NULL, style, inst, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
51 |
- "xsl:key : XPath pattern compilation failed '%s'\n", |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
52 |
+ "xsl:key : 'match' pattern compilation failed '%s'\n", |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
53 |
pattern); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
54 |
if (style != NULL) style->errors++; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
55 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
56 |
key->usecomp = xsltXPathCompile(style, use); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
57 |
if (key->usecomp == NULL) { |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
58 |
xsltTransformError(NULL, style, inst, |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
59 |
- "xsl:key : XPath pattern compilation failed '%s'\n", |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
60 |
+ "xsl:key : 'use' expression compilation failed '%s'\n", |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
61 |
use); |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
62 |
if (style != NULL) style->errors++; |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
63 |
} |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
64 |
-- |
76a9a8bd58ae
16554178 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
65 |
cgit v0.9.2 |