components/libxslt/patches/06-libxslt-Cleanup-of-the-pattern-compilation-code.patch
author Gabriel Carrillo <gabriel.carrillo@oracle.com>
Wed, 11 Jun 2014 09:41:54 -0700
branchs11u1sru20-backport
changeset 3174 3b5835d4aaf3
parent 2471 b1f0e4a84df6
permissions -rw-r--r--
Added tag 0.175.1.20.0.5.0, S11.1SRU20.5 for changeset c059623861df
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2471
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
Taken as it's from:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
http://git.gnome.org/browse/libxslt/commit/?id=8566ab4a10158d195adb5f1f61afe1ee8bfebd12
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
Avoid potential crashes and memory leaks
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
https://bugzilla.redhat.com/show_bug.cgi?id=852937
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
CVE-2012-2870
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
From 8566ab4a10158d195adb5f1f61afe1ee8bfebd12 Mon Sep 17 00:00:00 2001
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
From: Daniel Veillard <[email protected]>
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
Date: Thu, 09 Aug 2012 07:31:07 +0000
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
Subject: Cleanup of the pattern compilation code
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
Avoid potential crashes and memory leaks
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
---
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
diff --git a/libxslt/pattern.c b/libxslt/pattern.c
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
index 1155b54..a6140cb 100644
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
--- a/libxslt/pattern.c
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
+++ b/libxslt/pattern.c
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
@@ -303,6 +303,10 @@ xsltCompMatchAdd(xsltParserContextPtr ctxt, xsltCompMatchPtr comp,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
 	     "xsltCompMatchAdd: memory re-allocation failure.\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
 	    if (ctxt->style != NULL)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
 		ctxt->style->errors++;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
+	    if (value)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
+	        xmlFree(value);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
+	    if (value2)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
+	        xmlFree(value2);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
 	    return (-1);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
 	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
         comp->maxStep *= 2;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
@@ -1384,17 +1388,22 @@ xsltCompileIdKeyPattern(xsltParserContextPtr ctxt, xmlChar *name,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
         lit = xsltScanLiteral(ctxt);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
-	if (ctxt->error)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
+	if (ctxt->error) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
+	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
+		    "xsltCompileIdKeyPattern : Literal expected\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
 	    return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
+	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
 	if (CUR != ')') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
 	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
 		    "xsltCompileIdKeyPattern : ) expected\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
+	    xmlFree(lit);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
 	    ctxt->error = 1;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
 	    return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
 	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
 	PUSH(XSLT_OP_ID, lit, NULL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
+	lit = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
     } else if ((aid) && (xmlStrEqual(name, (const xmlChar *)"key"))) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
 	if (axis != 0) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
 	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
@@ -1405,8 +1414,11 @@ xsltCompileIdKeyPattern(xsltParserContextPtr ctxt, xmlChar *name,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
         lit = xsltScanLiteral(ctxt);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
-	if (ctxt->error)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
+	if (ctxt->error) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
+	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
+		    "xsltCompileIdKeyPattern : Literal expected\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
 	    return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
+	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66
 	if (CUR != ',') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    67
 	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    68
@@ -1417,25 +1429,36 @@ xsltCompileIdKeyPattern(xsltParserContextPtr ctxt, xmlChar *name,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    69
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    70
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    71
         lit2 = xsltScanLiteral(ctxt);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    72
-	if (ctxt->error)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    73
+	if (ctxt->error) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    74
+	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    75
+		    "xsltCompileIdKeyPattern : Literal expected\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    76
+	    xmlFree(lit);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    77
 	    return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    78
+	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    79
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    80
 	if (CUR != ')') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    81
 	    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    82
 		    "xsltCompileIdKeyPattern : ) expected\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    83
+	    xmlFree(lit);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    84
+	    xmlFree(lit2);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    85
 	    ctxt->error = 1;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    86
 	    return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    87
 	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    88
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    89
 	/* URGENT TODO: support namespace in keys */
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    90
 	PUSH(XSLT_OP_KEY, lit, lit2, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    91
+	lit = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    92
+	lit2 = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    93
     } else if (xmlStrEqual(name, (const xmlChar *)"processing-instruction")) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    94
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    95
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    96
 	if (CUR != ')') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    97
 	    lit = xsltScanLiteral(ctxt);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    98
-	    if (ctxt->error)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    99
+	    if (ctxt->error) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   100
+		xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   101
+			"xsltCompileIdKeyPattern : Literal expected\n");
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   102
 		return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   103
+	    }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   104
 	    SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   105
 	    if (CUR != ')') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   106
 		xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   107
@@ -1446,6 +1469,7 @@ xsltCompileIdKeyPattern(xsltParserContextPtr ctxt, xmlChar *name,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   108
 	}
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   109
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   110
 	PUSH(XSLT_OP_PI, lit, NULL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   111
+	lit = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   112
     } else if (xmlStrEqual(name, (const xmlChar *)"text")) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   113
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   114
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   115
@@ -1496,8 +1520,7 @@ xsltCompileIdKeyPattern(xsltParserContextPtr ctxt, xmlChar *name,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   116
 	return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   117
     }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   118
 error:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   119
-    if (name != NULL)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   120
-	xmlFree(name);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   121
+    return;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   122
 }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   123
 
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   124
 /**
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   125
@@ -1560,6 +1583,8 @@ parse_node_test:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   126
     SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   127
     if (CUR == '(') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   128
 	xsltCompileIdKeyPattern(ctxt, token, 0, novar, axis);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   129
+	xmlFree(token);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   130
+	token = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   131
 	if (ctxt->error)
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   132
 	    goto error;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   133
     } else if (CUR == ':') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   134
@@ -1578,20 +1603,24 @@ parse_node_test:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   135
 	    "xsltCompileStepPattern : no namespace bound to prefix %s\n",
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   136
 				 prefix);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   137
 		xmlFree(prefix);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   138
+		prefix=NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   139
 		ctxt->error = 1;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   140
 		goto error;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   141
 	    } else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   142
 		URL = xmlStrdup(ns->href);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   143
 	    }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   144
 	    xmlFree(prefix);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   145
+	    prefix=NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   146
 	    if (token == NULL) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   147
 		if (CUR == '*') {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   148
 		    NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   149
                     if (axis == AXIS_ATTRIBUTE) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   150
                         PUSH(XSLT_OP_ATTR, NULL, URL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   151
+			URL = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   152
                     }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   153
                     else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   154
                         PUSH(XSLT_OP_NS, URL, NULL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   155
+			URL = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   156
                     }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   157
 		} else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   158
 		    xsltTransformError(NULL, NULL, NULL,
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   159
@@ -1602,9 +1631,13 @@ parse_node_test:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   160
 	    } else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   161
                 if (axis == AXIS_ATTRIBUTE) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   162
                     PUSH(XSLT_OP_ATTR, token, URL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   163
+		    token = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   164
+		    URL = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   165
                 }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   166
                 else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   167
                     PUSH(XSLT_OP_ELEM, token, URL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   168
+		    token = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   169
+		    URL = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   170
                 }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   171
 	    }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   172
 	} else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   173
@@ -1626,6 +1659,7 @@ parse_node_test:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   174
 		goto error;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   175
 	    }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   176
 	    xmlFree(token);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   177
+	    token = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   178
             SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   179
             token = xsltScanNCName(ctxt);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   180
 	    goto parse_node_test;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   181
@@ -1640,9 +1674,13 @@ parse_node_test:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   182
 	    URL = xmlStrdup(URI);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   183
         if (axis == AXIS_ATTRIBUTE) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   184
             PUSH(XSLT_OP_ATTR, token, URL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   185
+	    token = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   186
+	    URL = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   187
         }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   188
         else {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   189
             PUSH(XSLT_OP_ELEM, token, URL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   190
+	    token = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   191
+	    URL = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   192
         }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   193
     }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   194
 parse_predicate:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   195
@@ -1682,6 +1720,7 @@ parse_predicate:
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   196
         }
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   197
 	ret = xmlStrndup(q, CUR_PTR - q);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   198
 	PUSH(XSLT_OP_PREDICATE, ret, NULL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   199
+	ret = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   200
 	/* push the predicate lower than local test */
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   201
 	SWAP();
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   202
 	NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   203
@@ -1790,6 +1829,8 @@ xsltCompileLocationPathPattern(xsltParserContextPtr ctxt, int novar) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   204
 	SKIP_BLANKS;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   205
 	if ((CUR == '(') && !xmlXPathIsNodeType(name)) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   206
 	    xsltCompileIdKeyPattern(ctxt, name, 1, novar, 0);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   207
+	    xmlFree(name);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   208
+	    name = NULL;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   209
 	    if ((CUR == '/') && (NXT(1) == '/')) {
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   210
 		PUSH(XSLT_OP_ANCESTOR, NULL, NULL, novar);
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   211
 		NEXT;
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   212
--
b1f0e4a84df6 15807903 problem in LIBRARY/LIBXSLT
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   213
cgit v0.9.0.2