diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd8eaa5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/libxslt-1.1.32.tar.gz diff --git a/EMPTY b/EMPTY deleted file mode 100644 index 0519ecb..0000000 --- a/EMPTY +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/libxslt-1.1.26-utf8-docs.patch b/libxslt-1.1.26-utf8-docs.patch new file mode 100644 index 0000000..537718f --- /dev/null +++ b/libxslt-1.1.26-utf8-docs.patch @@ -0,0 +1,103 @@ +--- libxslt-1.1.26/ChangeLog.utf8 2009-07-24 10:16:49.000000000 +0200 ++++ libxslt-1.1.26/ChangeLog 2011-03-20 03:28:28.142684293 +0100 +@@ -284,7 +284,7 @@ + + Thu Aug 23 11:47:20 CEST 2007 Daniel Veillard + +- * libexslt/date.c: apply patch from Björn Wiberg fixing build on AIX ++ * libexslt/date.c: apply patch from Björn Wiberg fixing build on AIX + and closing bug #332173 + + Fri Aug 3 15:49:26 CEST 2007 Daniel Veillard +@@ -2112,7 +2112,7 @@ + Tue Feb 17 11:29:15 CET 2004 Daniel Veillard + + * libxslt/templates.c: applied patch from #134588 provided by +- Mariano Suárez-Alvarez, attribute text node without doc. ++ Mariano Suárez-Alvarez, attribute text node without doc. + + Mon Feb 16 15:55:57 CET 2004 Daniel Veillard + +@@ -3121,7 +3121,7 @@ + * python/generator.py: fixed a problem in the generator where + the way functions are remapped as methods on classes was + not symetric and dependant on python internal hash order, +- as reported by Stéphane Bidoul ++ as reported by Stéphane Bidoul + * libexslt/strings.c: attempt at fixing an object type pbm + * libxslt/triodef.h: update for OpenVMS from libxml2 + +@@ -3497,7 +3497,7 @@ + + Thu Jan 2 23:23:30 CET 2003 Daniel Veillard + +- * libexslt/strings.c: applied patch from Jörg Walter to provide ++ * libexslt/strings.c: applied patch from Jörg Walter to provide + URI escaping and unescaping functions. + + Thu Dec 26 15:43:31 CET 2002 Daniel Veillard +@@ -3507,7 +3507,7 @@ + + Mon Dec 23 15:43:59 CET 2002 Daniel Veillard + +- * python/libxslt.c: patch from Stéphane Bidoul for Python 2.1 ++ * python/libxslt.c: patch from Stéphane Bidoul for Python 2.1 + + Sun Dec 22 22:54:04 CET 2002 Daniel Veillard + +@@ -3648,7 +3648,7 @@ + + Sun Nov 24 13:58:48 CET 2002 Daniel Veillard + +- * python/libxsl.py: updated with new version from Stéphane Bidoul ++ * python/libxsl.py: updated with new version from Stéphane Bidoul + + Sat Nov 23 22:49:08 CET 2002 Igor Zlatkovic + +@@ -5036,7 +5036,7 @@ + + Mon Nov 26 11:21:27 CET 2001 Daniel Veillard + +- * libxslt/pattern.c: fixing bug #64044 reported by Gero Meißner, ++ * libxslt/pattern.c: fixing bug #64044 reported by Gero Meißner, + template matches compilation was failing to skip blanks bewteen + consecutive predicates + +@@ -5119,7 +5119,7 @@ + + Tue Oct 30 19:32:08 CET 2001 Daniel Veillard + +- * configure.in: applied patches from David Härdeman closing ++ * configure.in: applied patches from David Härdeman closing + bug #62891 + + Tue Oct 30 15:25:19 CET 2001 Daniel Veillard +--- libxslt-1.1.26/NEWS.utf8 2009-09-24 16:38:20.000000000 +0200 ++++ libxslt-1.1.26/NEWS 2011-03-20 03:27:37.440684281 +0100 +@@ -312,7 +312,7 @@ + + + 1.1.4: Feb 23 2004: +- - bugfixes: attributes without doc (Mariano Suárez-Alvarez), problem with ++ - bugfixes: attributes without doc (Mariano Suárez-Alvarez), problem with + Yelp, extension problem + - display extension modules (Steve Little) + - Windows compilation patch (Mark Vadoc), Mingw (Mikhail Grushinskiy) +@@ -472,7 +472,7 @@ + + + 1.0.24: Jan 14 2003: +- - bug fixes: imported global varables, python bindings (Stéphane Bidoul), ++ - bug fixes: imported global varables, python bindings (Stéphane Bidoul), + EXSLT memory leak (Charles Bozeman), namespace generation on + xsl:attribute, space handling with imports (Daniel Stodden), + extension-element-prefixes (Josh Parsons), comments within xsl:text (Matt +@@ -485,7 +485,7 @@ + - fix the API generation scripts + - API to provide the sorting routines (Richard Jinks) + - added XML description of the EXSLT API +- - added ESXLT URI (un)escaping (Jörg Walter) ++ - added ESXLT URI (un)escaping (Jörg Walter) + - Some memory leaks have been found and fixed + - document() now support fragment identifiers in URIs + diff --git a/libxslt-1.1.32-CVE-2019-11068.patch b/libxslt-1.1.32-CVE-2019-11068.patch new file mode 100644 index 0000000..62007d6 --- /dev/null +++ b/libxslt-1.1.32-CVE-2019-11068.patch @@ -0,0 +1,120 @@ +From e03553605b45c88f0b4b2980adfbbb8f6fca2fd6 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Sun, 24 Mar 2019 09:51:39 +0100 +Subject: [PATCH] Fix security framework bypass + +xsltCheckRead and xsltCheckWrite return -1 in case of error but callers +don't check for this condition and allow access. With a specially +crafted URL, xsltCheckRead could be tricked into returning an error +because of a supposedly invalid URL that would still be loaded +succesfully later on. + +Fixes #12. + +Thanks to Felix Wilhelm for the report. +--- + libxslt/documents.c | 18 ++++++++++-------- + libxslt/imports.c | 9 +++++---- + libxslt/transform.c | 9 +++++---- + libxslt/xslt.c | 9 +++++---- + 4 files changed, 25 insertions(+), 20 deletions(-) + +diff --git a/libxslt/documents.c b/libxslt/documents.c +index 3f3a7312..4aad11bb 100644 +--- a/libxslt/documents.c ++++ b/libxslt/documents.c +@@ -296,10 +296,11 @@ xsltLoadDocument(xsltTransformContextPtr ctxt, const xmlChar *URI) { + int res; + + res = xsltCheckRead(ctxt->sec, ctxt, URI); +- if (res == 0) { +- xsltTransformError(ctxt, NULL, NULL, +- "xsltLoadDocument: read rights for %s denied\n", +- URI); ++ if (res <= 0) { ++ if (res == 0) ++ xsltTransformError(ctxt, NULL, NULL, ++ "xsltLoadDocument: read rights for %s denied\n", ++ URI); + return(NULL); + } + } +@@ -372,10 +373,11 @@ xsltLoadStyleDocument(xsltStylesheetPtr style, const xmlChar *URI) { + int res; + + res = xsltCheckRead(sec, NULL, URI); +- if (res == 0) { +- xsltTransformError(NULL, NULL, NULL, +- "xsltLoadStyleDocument: read rights for %s denied\n", +- URI); ++ if (res <= 0) { ++ if (res == 0) ++ xsltTransformError(NULL, NULL, NULL, ++ "xsltLoadStyleDocument: read rights for %s denied\n", ++ URI); + return(NULL); + } + } +diff --git a/libxslt/imports.c b/libxslt/imports.c +index 874870cc..3783b247 100644 +--- a/libxslt/imports.c ++++ b/libxslt/imports.c +@@ -130,10 +130,11 @@ xsltParseStylesheetImport(xsltStylesheetPtr style, xmlNodePtr cur) { + int secres; + + secres = xsltCheckRead(sec, NULL, URI); +- if (secres == 0) { +- xsltTransformError(NULL, NULL, NULL, +- "xsl:import: read rights for %s denied\n", +- URI); ++ if (secres <= 0) { ++ if (secres == 0) ++ xsltTransformError(NULL, NULL, NULL, ++ "xsl:import: read rights for %s denied\n", ++ URI); + goto error; + } + } +diff --git a/libxslt/transform.c b/libxslt/transform.c +index 13793914..0636dbd0 100644 +--- a/libxslt/transform.c ++++ b/libxslt/transform.c +@@ -3493,10 +3493,11 @@ xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node, + */ + if (ctxt->sec != NULL) { + ret = xsltCheckWrite(ctxt->sec, ctxt, filename); +- if (ret == 0) { +- xsltTransformError(ctxt, NULL, inst, +- "xsltDocumentElem: write rights for %s denied\n", +- filename); ++ if (ret <= 0) { ++ if (ret == 0) ++ xsltTransformError(ctxt, NULL, inst, ++ "xsltDocumentElem: write rights for %s denied\n", ++ filename); + xmlFree(URL); + xmlFree(filename); + return; +diff --git a/libxslt/xslt.c b/libxslt/xslt.c +index 780a5ad7..a234eb79 100644 +--- a/libxslt/xslt.c ++++ b/libxslt/xslt.c +@@ -6763,10 +6763,11 @@ xsltParseStylesheetFile(const xmlChar* filename) { + int res; + + res = xsltCheckRead(sec, NULL, filename); +- if (res == 0) { +- xsltTransformError(NULL, NULL, NULL, +- "xsltParseStylesheetFile: read rights for %s denied\n", +- filename); ++ if (res <= 0) { ++ if (res == 0) ++ xsltTransformError(NULL, NULL, NULL, ++ "xsltParseStylesheetFile: read rights for %s denied\n", ++ filename); + return(NULL); + } + } +-- +2.24.1 + diff --git a/libxslt-1.1.32-CVE-2019-18197.patch b/libxslt-1.1.32-CVE-2019-18197.patch new file mode 100644 index 0000000..a8c7cf5 --- /dev/null +++ b/libxslt-1.1.32-CVE-2019-18197.patch @@ -0,0 +1,30 @@ +From 2232473733b7313d67de8836ea3b29eec6e8e285 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Sat, 17 Aug 2019 16:51:53 +0200 +Subject: [PATCH] Fix dangling pointer in xsltCopyText + +xsltCopyText didn't reset ctxt->lasttext in some cases which could +lead to various memory errors in relation with CDATA sections in input +documents. + +Found by OSS-Fuzz. +--- + libxslt/transform.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libxslt/transform.c b/libxslt/transform.c +index 95ebd073..d7ab0b66 100644 +--- a/libxslt/transform.c ++++ b/libxslt/transform.c +@@ -1094,6 +1094,8 @@ xsltCopyText(xsltTransformContextPtr ctxt, xmlNodePtr target, + if ((copy->content = xmlStrdup(cur->content)) == NULL) + return NULL; + } ++ ++ ctxt->lasttext = NULL; + } else { + /* + * normal processing. keep counters to extend the text node +-- +2.22.0 + diff --git a/libxslt-1.1.32-unexpected-rvt-flag.patch b/libxslt-1.1.32-unexpected-rvt-flag.patch new file mode 100644 index 0000000..465616f --- /dev/null +++ b/libxslt-1.1.32-unexpected-rvt-flag.patch @@ -0,0 +1,313 @@ +From 7d81bd62d5788a9e2931c20a3d0a6be7e703c608 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Mon, 23 Jul 2018 22:52:12 +0200 +Subject: [PATCH] Fix EXSLT functions returning RVTs from outer scopes + +The RVTs referenced from function results must not be blindly registered +as local, as they might be part of variables from an outer scope. Remove +LOCAL/VARIABLE distinction for RVTs. Don't register as local RVT +unconditionally when reflagging as LOCAL. Instead, register function +result RVTs from inner variables as local RVTs when they're released in +xsltFreeStackElem. Keep local function result RVTs xsltReleaseLocalRVTs +instead of reregistering. + +Closes: https://gitlab.gnome.org/GNOME/libxslt/issues/2 + +Thanks to Daniel Mendler and Martin Gieseking for the reports. +--- + libexslt/functions.c | 11 ++++++++++- + libxslt/transform.c | 17 ++++++++++++++--- + libxslt/variables.c | 27 +++++++++++---------------- + libxslt/variables.h | 12 ++---------- + tests/docs/bug-210.xml | 1 + + tests/docs/bug-211.xml | 1 + + tests/general/bug-210.out | 2 ++ + tests/general/bug-210.xsl | 20 ++++++++++++++++++++ + tests/general/bug-211.out | 2 ++ + tests/general/bug-211.xsl | 26 ++++++++++++++++++++++++++ + 10 files changed, 89 insertions(+), 30 deletions(-) + create mode 100644 tests/docs/bug-210.xml + create mode 100644 tests/docs/bug-211.xml + create mode 100644 tests/general/bug-210.out + create mode 100644 tests/general/bug-210.xsl + create mode 100644 tests/general/bug-211.out + create mode 100644 tests/general/bug-211.xsl + +diff --git a/libexslt/functions.c b/libexslt/functions.c +index 2b83ca34..b7b968f8 100644 +--- a/libexslt/functions.c ++++ b/libexslt/functions.c +@@ -426,7 +426,15 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) { + } + } + /* +- * actual processing ++ * Actual processing. Note that contextVariable is set to NULL which ++ * means that RVTs returned from functions always end up as local RVTs, ++ * not as variable fragments if the function is called in the select ++ * expression of an xsl:variable. This is a hack that only works because ++ * xsltReleaseLocalRVTs isn't called after processing xsl:variable. ++ * ++ * It would probably be better to remove the fragile contextVariable ++ * logic and make xsltEvalVariable move the required RVTs into the ++ * variable manually. + */ + fake = xmlNewDocNode(tctxt->output, NULL, + (const xmlChar *)"fake", NULL); +@@ -766,6 +774,7 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt, + return; + } + /* Mark as function result. */ ++ xsltRegisterLocalRVT(ctxt, container); + container->psvi = XSLT_RVT_FUNC_RESULT; + + oldInsert = ctxt->insert; +diff --git a/libxslt/transform.c b/libxslt/transform.c +index 90d2731d..d7af31f1 100644 +--- a/libxslt/transform.c ++++ b/libxslt/transform.c +@@ -2295,6 +2295,7 @@ static void + xsltReleaseLocalRVTs(xsltTransformContextPtr ctxt, xmlDocPtr base) + { + xmlDocPtr cur = ctxt->localRVT, tmp; ++ xmlDocPtr prev = NULL; + + if (cur == base) + return; +@@ -2308,16 +2309,26 @@ xsltReleaseLocalRVTs(xsltTransformContextPtr ctxt, xmlDocPtr base) + xsltReleaseRVT(ctxt, tmp); + } else if (tmp->psvi == XSLT_RVT_GLOBAL) { + xsltRegisterPersistRVT(ctxt, tmp); +- } else if (tmp->psvi != XSLT_RVT_FUNC_RESULT) { ++ } else if (tmp->psvi == XSLT_RVT_FUNC_RESULT) { ++ if (prev == NULL) ++ ctxt->localRVT = tmp; ++ else ++ prev->next = (xmlNodePtr) tmp; ++ tmp->prev = (xmlNodePtr) prev; ++ prev = tmp; ++ } else { + xmlGenericError(xmlGenericErrorContext, + "xsltReleaseLocalRVTs: Unexpected RVT flag %p\n", + tmp->psvi); + } + } while (cur != base); + ++ if (prev == NULL) ++ ctxt->localRVT = base; ++ else ++ prev->next = (xmlNodePtr) base; + if (base != NULL) +- base->prev = NULL; +- ctxt->localRVT = base; ++ base->prev = (xmlNodePtr) prev; + } + + /** +diff --git a/libxslt/variables.c b/libxslt/variables.c +index fe6f299c..8f88e573 100644 +--- a/libxslt/variables.c ++++ b/libxslt/variables.c +@@ -123,7 +123,7 @@ xsltRegisterTmpRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT) + return(-1); + + RVT->prev = NULL; +- RVT->psvi = XSLT_RVT_VARIABLE; ++ RVT->psvi = XSLT_RVT_LOCAL; + + /* + * We'll restrict the lifetime of user-created fragments +@@ -163,6 +163,7 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, + return(-1); + + RVT->prev = NULL; ++ RVT->psvi = XSLT_RVT_LOCAL; + + /* + * When evaluating "select" expressions of xsl:variable +@@ -173,7 +174,6 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, + if ((ctxt->contextVariable != NULL) && + (XSLT_TCTXT_VARIABLE(ctxt)->flags & XSLT_VAR_IN_SELECT)) + { +- RVT->psvi = XSLT_RVT_VARIABLE; + RVT->next = (xmlNodePtr) XSLT_TCTXT_VARIABLE(ctxt)->fragment; + XSLT_TCTXT_VARIABLE(ctxt)->fragment = RVT; + return(0); +@@ -183,7 +183,6 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, + * If not reference by a returning instruction (like EXSLT's function), + * then this fragment will be freed, when the instruction exits. + */ +- RVT->psvi = XSLT_RVT_LOCAL; + RVT->next = (xmlNodePtr) ctxt->localRVT; + if (ctxt->localRVT != NULL) + ctxt->localRVT->prev = (xmlNodePtr) RVT; +@@ -314,14 +313,8 @@ xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, void *val) { + #endif + + if (val == XSLT_RVT_LOCAL) { +- if (doc->psvi != XSLT_RVT_FUNC_RESULT) { +- xmlGenericError(xmlGenericErrorContext, +- "xsltFlagRVTs: Invalid transition %p => LOCAL\n", +- doc->psvi); +- return(-1); +- } +- +- xsltRegisterLocalRVT(ctxt, doc); ++ if (doc->psvi == XSLT_RVT_FUNC_RESULT) ++ doc->psvi = XSLT_RVT_LOCAL; + } else if (val == XSLT_RVT_GLOBAL) { + if (doc->psvi != XSLT_RVT_LOCAL) { + xmlGenericError(xmlGenericErrorContext, +@@ -585,10 +578,12 @@ xsltFreeStackElem(xsltStackElemPtr elem) { + cur = elem->fragment; + elem->fragment = (xmlDocPtr) cur->next; + +- if (cur->psvi == XSLT_RVT_VARIABLE) { +- xsltReleaseRVT((xsltTransformContextPtr) elem->context, +- cur); +- } else if (cur->psvi != XSLT_RVT_FUNC_RESULT) { ++ if (cur->psvi == XSLT_RVT_LOCAL) { ++ xsltReleaseRVT(elem->context, cur); ++ } else if (cur->psvi == XSLT_RVT_FUNC_RESULT) { ++ xsltRegisterLocalRVT(elem->context, cur); ++ cur->psvi = XSLT_RVT_FUNC_RESULT; ++ } else { + xmlGenericError(xmlGenericErrorContext, + "xsltFreeStackElem: Unexpected RVT flag %p\n", + cur->psvi); +@@ -992,7 +987,7 @@ xsltEvalVariable(xsltTransformContextPtr ctxt, xsltStackElemPtr variable, + * the Result Tree Fragment. + */ + variable->fragment = container; +- container->psvi = XSLT_RVT_VARIABLE; ++ container->psvi = XSLT_RVT_LOCAL; + + oldOutput = ctxt->output; + oldInsert = ctxt->insert; +diff --git a/libxslt/variables.h b/libxslt/variables.h +index 24acf8d1..039288fb 100644 +--- a/libxslt/variables.h ++++ b/libxslt/variables.h +@@ -45,14 +45,6 @@ extern "C" { + */ + #define XSLT_RVT_LOCAL ((void *)1) + +-/** +- * XSLT_RVT_VARIABLE: +- * +- * RVT is part of a local variable and destroyed after the variable goes out +- * of scope. +- */ +-#define XSLT_RVT_VARIABLE ((void *)2) +- + /** + * XSLT_RVT_FUNC_RESULT: + * +@@ -60,14 +52,14 @@ extern "C" { + * destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or + * XSLT_RVT_VARIABLE in the template that receives the return value. + */ +-#define XSLT_RVT_FUNC_RESULT ((void *)3) ++#define XSLT_RVT_FUNC_RESULT ((void *)2) + + /** + * XSLT_RVT_GLOBAL: + * + * RVT is part of a global variable. + */ +-#define XSLT_RVT_GLOBAL ((void *)4) ++#define XSLT_RVT_GLOBAL ((void *)3) + + /* + * Interfaces for the variable module. +diff --git a/tests/docs/bug-210.xml b/tests/docs/bug-210.xml +new file mode 100644 +index 00000000..69d62f2c +--- /dev/null ++++ b/tests/docs/bug-210.xml +@@ -0,0 +1 @@ ++ +diff --git a/tests/docs/bug-211.xml b/tests/docs/bug-211.xml +new file mode 100644 +index 00000000..69d62f2c +--- /dev/null ++++ b/tests/docs/bug-211.xml +@@ -0,0 +1 @@ ++ +diff --git a/tests/general/bug-210.out b/tests/general/bug-210.out +new file mode 100644 +index 00000000..445906d6 +--- /dev/null ++++ b/tests/general/bug-210.out +@@ -0,0 +1,2 @@ ++ ++value +diff --git a/tests/general/bug-210.xsl b/tests/general/bug-210.xsl +new file mode 100644 +index 00000000..1915171d +--- /dev/null ++++ b/tests/general/bug-210.xsl +@@ -0,0 +1,20 @@ ++ ++ ++ ++ ++ value ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/tests/general/bug-211.out b/tests/general/bug-211.out +new file mode 100644 +index 00000000..7b3cf11c +--- /dev/null ++++ b/tests/general/bug-211.out +@@ -0,0 +1,2 @@ ++ ++__ +diff --git a/tests/general/bug-211.xsl b/tests/general/bug-211.xsl +new file mode 100644 +index 00000000..557f5fb3 +--- /dev/null ++++ b/tests/general/bug-211.xsl +@@ -0,0 +1,26 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +-- +GitLab + diff --git a/libxslt.spec b/libxslt.spec new file mode 100644 index 0000000..d577505 --- /dev/null +++ b/libxslt.spec @@ -0,0 +1,347 @@ +%if 0%{?rhel} > 7 +# Disable python2 build by default +%bcond_with python2 +%else +%bcond_without python2 +%endif + +Name: libxslt +Summary: Library providing the Gnome XSLT engine +Version: 1.1.32 +Release: 6%{?dist} + +License: MIT +URL: http://xmlsoft.org/XSLT +Source: ftp://xmlsoft.org/XSLT/%{name}-%{version}.tar.gz + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: make +BuildRequires: gcc +BuildRequires: %{_bindir}/libgcrypt-config +BuildRequires: pkgconfig(libxml-2.0) >= 2.6.27 + +# Fedora specific patches +Patch0: multilib.patch +Patch1: libxslt-1.1.26-utf8-docs.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1765632 +Patch2: multilib2.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1775517 +Patch3: libxslt-1.1.32-CVE-2019-18197.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1715732 +Patch4: libxslt-1.1.32-CVE-2019-11068.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1860467 +Patch5: libxslt-1.1.32-unexpected-rvt-flag.patch + +%description +This C library allows to transform XML files into other XML files +(or HTML, text, ...) using the standard XSLT stylesheet transformation +mechanism. To use it you need to have a version of libxml2 >= 2.6.27 +installed. The xsltproc command is a command line interface to the XSLT engine + +%package devel +Summary: Development libraries and header files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libgcrypt-devel%{?_isa} +Requires: libgpg-error-devel%{?_isa} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%if %{with python2} +%package -n python2-libxslt +Summary: Python 2 bindings for %{name} +BuildRequires: python2-devel +BuildRequires: python2-libxml2 +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python2-libxml2 +%{?python_provide:%python_provide python2-libxslt} +# Remove before F30 +Provides: %{name}-python = %{version}-%{release} +Provides: %{name}-python%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-python < %{version}-%{release} + +%description -n python2-libxslt +The libxslt-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by the libxslt library to apply XSLT transformations. + +This library allows to parse sytlesheets, uses the libxml2-python +to load and save XML and HTML files. Direct access to XPath and +the XSLT transformation context are possible to extend the XSLT language +with XPath functions written in Python. +%endif # with python2 + +%prep +%autosetup -p1 +chmod 644 python/tests/* + +%build +autoreconf -vfi +%configure --disable-static --disable-silent-rules +%make_build + +%install +%make_install +find %{buildroot} -name '*.la' -print -delete +# multiarch crazyness on timestamp differences +touch -m --reference=%{buildroot}%{_includedir}/libxslt/xslt.h %{buildroot}%{_bindir}/xslt-config +rm -vrf %{buildroot}%{_docdir} + +%check +%make_build tests + +%ldconfig_scriptlets + +%files +%license Copyright +%doc AUTHORS ChangeLog NEWS README FEATURES +%{_bindir}/xsltproc +%{_libdir}/libxslt.so.* +%{_libdir}/libexslt.so.* +%{_libdir}/libxslt-plugins/ +%{_mandir}/man1/xsltproc.1* + +%files devel +%doc doc/libxslt-api.xml +%doc doc/libxslt-refs.xml +%doc doc/EXSLT/libexslt-api.xml +%doc doc/EXSLT/libexslt-refs.xml +%doc %{_mandir}/man3/libxslt.3* +%doc %{_mandir}/man3/libexslt.3* +%doc doc/*.html doc/html doc/*.gif doc/*.png +%doc doc/images +%doc doc/tutorial +%doc doc/tutorial2 +%doc doc/EXSLT +%{_libdir}/libxslt.so +%{_libdir}/libexslt.so +%{_libdir}/xsltConf.sh +%{_datadir}/aclocal/libxslt.m4 +%{_includedir}/libxslt/ +%{_includedir}/libexslt/ +%{_libdir}/pkgconfig/libxslt.pc +%{_libdir}/pkgconfig/libexslt.pc +%{_bindir}/xslt-config + +%if %{with python2} +%files -n python2-libxslt +%{python2_sitearch}/libxslt.py* +%{python2_sitearch}/libxsltmod.so +%doc python/libxsltclass.txt +%doc python/tests/*.py +%doc python/tests/*.xml +%doc python/tests/*.xsl +%endif # with python2 + +%changelog +* Mon Aug 24 2020 David King - 1.1.32-6 +- Fix unexpected RVT flag error (#1860467) + +* Thu Jan 09 2020 David King - 1.1.32-5 +- Fix CVE-2019-18197 (#1775517) +- Fix CVE-2019-11068 (#1715732) + +* Thu Jan 09 2020 David King - 1.1.32-4 +- Fix multilib issues with devel subpackage (#1765632) + +* Mon Jun 25 2018 Charalampos Stratakis - 1.1.32-3 +- Conditionalize the python2 subpackage + +* Fri Feb 09 2018 Igor Gnatenko - 1.1.32-2 +- Fix typo in Requires + +* Fri Feb 09 2018 Igor Gnatenko - 1.1.32-1 +- Update to 1.1.32 +- Cleanup spec +- Re-enable hardened build + +* Wed Feb 07 2018 Fedora Release Engineering - 1.1.30-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Igor Gnatenko - 1.1.30-4 +- Switch to %%ldconfig_scriptlets + +* Tue Jan 09 2018 Iryna Shcherbina - 1.1.30-3 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Oct 04 2017 Igor Gnatenko - 1.1.30-2 +- Fix broken xslt-config binary + +* Mon Sep 4 2017 Daniel Veillard 1.1.30-1 +- Update to 1.1.30 + +* Sun Aug 20 2017 Zbigniew JÄ™drzejewski-Szmek - 1.1.29-6 +- Add Provides for the old name without %%_isa + +* Sat Aug 19 2017 Zbigniew JÄ™drzejewski-Szmek - 1.1.29-5 +- Python 2 binary package renamed to python2-libxslt + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Thu Aug 03 2017 Fedora Release Engineering - 1.1.29-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.1.29-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jun 26 2017 Petr Pisar - 1.1.29-2 +- Rebuild against glibc without xlocale.h (bug #1464640) + +* Wed Mar 08 2017 Petr Å abata - 1.1.29-1 +- 1.1.29 bump + +* Fri Feb 10 2017 Fedora Release Engineering - 1.1.28-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jul 19 2016 Fedora Release Engineering - 1.1.28-13 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Thu Feb 04 2016 Fedora Release Engineering - 1.1.28-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 1.1.28-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Mar 6 2015 Daniel Veillard 1.1.28-10 +- desactivate the hardened build as it seems buggy #1199522 + +* Sat Feb 21 2015 Till Maas - 1.1.28-9 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Sun Aug 17 2014 Fedora Release Engineering - 1.1.28-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.1.28-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Apr 24 2014 Tomas Mraz - 1.1.28-6 +- Rebuild for new libgcrypt + +* Tue Aug 6 2013 Ville Skyttä - 1.1.28-5 +- Fix build with unversioned %%{_docdir_fmt}, ship Python examples only once. + +* Sat Aug 03 2013 Fedora Release Engineering - 1.1.28-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Jun 21 2013 Matthias Clasen - 1.1.28-3 +- Don't ship api docs twice (they were included in both + the main and the devel package, by accident (need to save + space on the f19 live images) + +* Thu Feb 14 2013 Fedora Release Engineering - 1.1.28-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Nov 21 2012 Daniel Veillard - 1.1.28-1 +- upstream release of libxslt-1.1.28 +- a few bug fixes and cleanups + +* Tue Oct 9 2012 Daniel Veillard - 1.1.27-2 +- fix a regression in default namespace handling + +* Wed Sep 12 2012 Daniel Veillard - 1.1.27-1 +- upstream release of libxslt-1.1.27 +- a lot of bug fixes and improvements + +* Thu Jul 19 2012 Fedora Release Engineering - 1.1.26-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 1.1.26-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sun Mar 20 2011 Michel Salim - 1.1.26-8 +- ChangeLog: fix character encoding +- Restore timestamps for patched documentation files + +* Tue Feb 08 2011 Fedora Release Engineering - 1.1.26-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Dec 17 2010 Dan Horák - 1.1.26-6 +- libexslt needs libgcrypt-devel via its pkgconfig file + +* Mon Oct 25 2010 Parag Nemade - 1.1.26-5 +- Patch from Paul Howarth for converting files to utf8 (#226088) + +* Tue Oct 05 2010 Parag Nemade - 1.1.26-4 +- Merge-review cleanup (#226088) + +* Wed Jul 21 2010 David Malcolm - 1.1.26-3 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Mon May 24 2010 Tom "spot" Callaway 1.1.26-2 +- disable static libs + +* Thu Sep 24 2009 Daniel Veillard 1.1.26-1 +- couple of bug fixes +- export a symbol needed by lxml + +* Mon Sep 21 2009 Daniel Veillard 1.1.25-2 +- fix a locking bug in 1.1.25 + +* Thu Sep 17 2009 Daniel Veillard 1.1.25-1 +- release of 1.1.25 +- Add API versioning for libxslt shared library +- xsl:sort lang support using the locale +- many bug fixes + +* Sat Jul 25 2009 Fedora Release Engineering - 1.1.24-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 1.1.24-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams 1.1.24-3 +- Rebuild for Python 2.6 + +* Wed Oct 8 2008 Daniel Veillard 1.1.24-2.fc10 +- CVE-2008-2935 fix + +* Tue May 13 2008 Daniel Veillard 1.1.24-1.fc10 +- release of 1.1.24 +- fixes a few bugs including the key initialization problem +- tentative fix for multiarch devel problems + +* Mon Apr 28 2008 Daniel Veillard 1.1.23-3.fc10 +- and the previous patch was incomplte breaking the python bindings + see 444317 and 444455 + +* Tue Apr 22 2008 Daniel Veillard 1.1.23-2.fc10 +- revert a key initialization patch from 1.1.23 which seems broken + see rhbz#442097 + +* Tue Apr 8 2008 Daniel Veillard 1.1.23-1.fc9 +- upstream release 1.1.23 +- bugfixes + +* Wed Feb 20 2008 Fedora Release Engineering - 1.1.22-2 +- Autorebuild for GCC 4.3 + +* Thu Aug 23 2007 Daniel Veillard 1.1.22-1 +- upstream release 1.1.22 see http://xmlsoft.org/XSLT/news.html + +* Tue Jun 12 2007 Daniel Veillard 1.1.21-1 +- upstream release 1.1.21 see http://xmlsoft.org/XSLT/news.html + +* Thu Feb 15 2007 Adam Jackson +- Add dist tag to Release to fix 6->7 upgrades. + +* Wed Jan 17 2007 Daniel Veillard +- upstream release 1.1.20 see http://xmlsoft.org/XSLT/news.html + +* Thu Dec 7 2006 Jeremy Katz - 1.1.19-2 +- rebuild against python 2.5 + +* Wed Nov 29 2006 Daniel Veillard +- upstream release 1.1.19 see http://xmlsoft.org/XSLT/news.html + +* Thu Oct 26 2006 Daniel Veillard +- upstream release 1.1.18 see http://xmlsoft.org/XSLT/news.html + +* Wed Jul 12 2006 Jesse Keating - 1.1.17-1.1 +- rebuild + +* Tue Jun 6 2006 Daniel Veillard +- upstream release 1.1.17 see http://xmlsoft.org/XSLT/news.html diff --git a/multilib.patch b/multilib.patch new file mode 100644 index 0000000..94715d2 --- /dev/null +++ b/multilib.patch @@ -0,0 +1,24 @@ +*** XSLT/xslt-config.in.orig 2006-06-06 17:32:23.000000000 +0200 +--- XSLT/xslt-config.in 2006-06-06 17:32:48.000000000 +0200 +*************** +*** 4,10 **** + exec_prefix=@exec_prefix@ + exec_prefix_set=no + includedir=@includedir@ +! libdir=@libdir@ + + usage() + { +--- 4,15 ---- + exec_prefix=@exec_prefix@ + exec_prefix_set=no + includedir=@includedir@ +! if [ "`ldd /bin/sh | grep lib64`" = "" ] +! then +! libdir=${exec_prefix}/lib +! else +! libdir=${exec_prefix}/lib64 +! fi + + usage() + { diff --git a/multilib2.patch b/multilib2.patch new file mode 100644 index 0000000..22ffe7e --- /dev/null +++ b/multilib2.patch @@ -0,0 +1,28 @@ +diff -urN libxslt-1.1.32/libxslt/xsltconfig.h.in libxslt-1.1.32.completemultilib/libxslt/xsltconfig.h.in +--- libxslt-1.1.32/libxslt/xsltconfig.h.in 2017-10-26 07:55:47.000000000 +0000 ++++ libxslt-1.1.32.completemultilib/libxslt/xsltconfig.h.in 2019-05-06 11:35:57.948191169 +0000 +@@ -120,7 +120,11 @@ + #ifndef WITH_MODULES + #define WITH_MODULES + #endif +-#define LIBXSLT_DEFAULT_PLUGINS_PATH() "@LIBXSLT_DEFAULT_PLUGINS_PATH@" ++#ifdef __LP64__ ++#define LIBXSLT_DEFAULT_PLUGINS_PATH() "/usr/lib64/libxslt-plugins" ++#else ++#define LIBXSLT_DEFAULT_PLUGINS_PATH() "/usr/lib/libxslt-plugins" ++#endif + #endif + + /** +diff -urN libxslt-1.1.32/xslt-config.in libxslt-1.1.32.completemultilib/xslt-config.in +--- libxslt-1.1.32/xslt-config.in 2015-05-10 14:11:30.000000000 +0000 ++++ libxslt-1.1.32.completemultilib/xslt-config.in 2019-05-06 11:34:59.670592304 +0000 +@@ -65,7 +65,7 @@ + ;; + + --plugins) +- echo @LIBXSLT_DEFAULT_PLUGINS_PATH@ ++ echo ${libdir}/libxslt-plugins + exit 0 + ;; + diff --git a/sources b/sources new file mode 100644 index 0000000..1fa5d9c --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (libxslt-1.1.32.tar.gz) = e1ed3c103cd4c9897e7dd2360a11f63cf30382b7566ce6fcc81117804e203714446b5a62179ce628c3834b0b32ecdeeceecbdfa417507ce9ed5a107a0ebefb39