[mingw-libxslt: 2/20] Initial import

Kalev Lember kalev at fedoraproject.org
Wed Mar 7 15:47:16 UTC 2012


commit a6fc64120aebeddf7eb504d9b3e8185dd6cef2da
Author: epienbro <epienbro at fedoraproject.org>
Date:   Sun May 24 12:42:08 2009 +0000

    Initial import

 .cvsignore                                |    1 +
 libexslt-rc4.patch                        |  173 +++++++++++++++++++++++++++++
 mingw32-libxslt-1.1.24-win32-shared.patch |   21 ++++
 mingw32-libxslt.spec                      |  139 +++++++++++++++++++++++
 sources                                   |    1 +
 5 files changed, 335 insertions(+), 0 deletions(-)
---
diff --git a/.cvsignore b/.cvsignore
index e69de29..12580dd 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -0,0 +1 @@
+libxslt-1.1.24.tar.gz
diff --git a/libexslt-rc4.patch b/libexslt-rc4.patch
new file mode 100644
index 0000000..0fbf8f6
--- /dev/null
+++ b/libexslt-rc4.patch
@@ -0,0 +1,173 @@
+Index: libexslt/crypto.c
+===================================================================
+--- libexslt/crypto.c	(revision 1485)
++++ libexslt/crypto.c	(working copy)
+@@ -317,13 +317,13 @@ exsltCryptoCryptoApiRc4Decrypt (xmlXPath
+ #define PLATFORM_MD5 GCRY_MD_MD5
+ #define PLATFORM_SHA1 GCRY_MD_SHA1
+ 
+-#ifdef HAVE_SYS_TYPES_H                                                        
+-# include <sys/types.h>                                                        
+-#endif                                                                         
+-#ifdef HAVE_STDINT_H                                                           
+-# include <stdint.h>                                                           
+-#endif                                                                         
+-  
++#ifdef HAVE_SYS_TYPES_H
++# include <sys/types.h>
++#endif
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++
+ #ifdef HAVE_SYS_SELECT_H
+ #include <sys/select.h>		/* needed by gcrypt.h 4 Jul 04 */
+ #endif
+@@ -595,11 +595,13 @@ exsltCryptoRc4EncryptFunction (xmlXPathP
+     int str_len = 0, bin_len = 0, hex_len = 0;
+     xmlChar *key = NULL, *str = NULL, *padkey = NULL;
+     xmlChar *bin = NULL, *hex = NULL;
++    xsltTransformContextPtr tctxt = NULL;
+ 
+-    if ((nargs < 1) || (nargs > 3)) {
++    if (nargs != 2) {
+ 	xmlXPathSetArityError (ctxt);
+ 	return;
+     }
++    tctxt = xsltXPathGetTransformContext(ctxt);
+ 
+     str = xmlXPathPopString (ctxt);
+     str_len = xmlUTF8Strlen (str);
+@@ -611,7 +613,7 @@ exsltCryptoRc4EncryptFunction (xmlXPathP
+     }
+ 
+     key = xmlXPathPopString (ctxt);
+-    key_len = xmlUTF8Strlen (str);
++    key_len = xmlUTF8Strlen (key);
+ 
+     if (key_len == 0) {
+ 	xmlXPathReturnEmptyString (ctxt);
+@@ -620,15 +622,33 @@ exsltCryptoRc4EncryptFunction (xmlXPathP
+ 	return;
+     }
+ 
+-    padkey = xmlMallocAtomic (RC4_KEY_LENGTH);
++    padkey = xmlMallocAtomic (RC4_KEY_LENGTH + 1);
++    if (padkey == NULL) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: Failed to allocate padkey\n");
++	tctxt->state = XSLT_STATE_STOPPED;
++	xmlXPathReturnEmptyString (ctxt);
++	goto done;
++    }
++    memset(padkey, 0, RC4_KEY_LENGTH + 1);
++
+     key_size = xmlUTF8Strsize (key, key_len);
++    if ((key_size > RC4_KEY_LENGTH) || (key_size < 0)) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: key size too long or key broken\n");
++	tctxt->state = XSLT_STATE_STOPPED;
++	xmlXPathReturnEmptyString (ctxt);
++	goto done;
++    }
+     memcpy (padkey, key, key_size);
+-    memset (padkey + key_size, '\0', sizeof (padkey));
+ 
+ /* encrypt it */
+     bin_len = str_len;
+     bin = xmlStrdup (str);
+     if (bin == NULL) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: Failed to allocate string\n");
++	tctxt->state = XSLT_STATE_STOPPED;
+ 	xmlXPathReturnEmptyString (ctxt);
+ 	goto done;
+     }
+@@ -638,6 +658,9 @@ exsltCryptoRc4EncryptFunction (xmlXPathP
+     hex_len = str_len * 2 + 1;
+     hex = xmlMallocAtomic (hex_len);
+     if (hex == NULL) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: Failed to allocate result\n");
++	tctxt->state = XSLT_STATE_STOPPED;
+ 	xmlXPathReturnEmptyString (ctxt);
+ 	goto done;
+     }
+@@ -670,11 +693,13 @@ exsltCryptoRc4DecryptFunction (xmlXPathP
+     int str_len = 0, bin_len = 0, ret_len = 0;
+     xmlChar *key = NULL, *str = NULL, *padkey = NULL, *bin =
+ 	NULL, *ret = NULL;
++    xsltTransformContextPtr tctxt = NULL;
+ 
+-    if ((nargs < 1) || (nargs > 3)) {
++    if (nargs != 2) {
+ 	xmlXPathSetArityError (ctxt);
+ 	return;
+     }
++    tctxt = xsltXPathGetTransformContext(ctxt);
+ 
+     str = xmlXPathPopString (ctxt);
+     str_len = xmlUTF8Strlen (str);
+@@ -686,7 +711,7 @@ exsltCryptoRc4DecryptFunction (xmlXPathP
+     }
+ 
+     key = xmlXPathPopString (ctxt);
+-    key_len = xmlUTF8Strlen (str);
++    key_len = xmlUTF8Strlen (key);
+ 
+     if (key_len == 0) {
+ 	xmlXPathReturnEmptyString (ctxt);
+@@ -695,22 +720,51 @@ exsltCryptoRc4DecryptFunction (xmlXPathP
+ 	return;
+     }
+ 
+-    padkey = xmlMallocAtomic (RC4_KEY_LENGTH);
++    padkey = xmlMallocAtomic (RC4_KEY_LENGTH + 1);
++    if (padkey == NULL) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: Failed to allocate padkey\n");
++	tctxt->state = XSLT_STATE_STOPPED;
++	xmlXPathReturnEmptyString (ctxt);
++	goto done;
++    }
++    memset(padkey, 0, RC4_KEY_LENGTH + 1);
+     key_size = xmlUTF8Strsize (key, key_len);
++    if ((key_size > RC4_KEY_LENGTH) || (key_size < 0)) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: key size too long or key broken\n");
++	tctxt->state = XSLT_STATE_STOPPED;
++	xmlXPathReturnEmptyString (ctxt);
++	goto done;
++    }
+     memcpy (padkey, key, key_size);
+-    memset (padkey + key_size, '\0', sizeof (padkey));
+ 
+ /* decode hex to binary */
+     bin_len = str_len;
+     bin = xmlMallocAtomic (bin_len);
++    if (bin == NULL) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: Failed to allocate string\n");
++	tctxt->state = XSLT_STATE_STOPPED;
++	xmlXPathReturnEmptyString (ctxt);
++	goto done;
++    }
+     ret_len = exsltCryptoHex2Bin (str, str_len, bin, bin_len);
+ 
+ /* decrypt the binary blob */
+     ret = xmlMallocAtomic (ret_len);
++    if (ret == NULL) {
++	xsltTransformError(tctxt, NULL, tctxt->inst,
++	    "exsltCryptoRc4EncryptFunction: Failed to allocate result\n");
++	tctxt->state = XSLT_STATE_STOPPED;
++	xmlXPathReturnEmptyString (ctxt);
++	goto done;
++    }
+     PLATFORM_RC4_DECRYPT (ctxt, padkey, bin, ret_len, ret, ret_len);
+ 
+     xmlXPathReturnString (ctxt, ret);
+ 
++done:
+     if (key != NULL)
+ 	xmlFree (key);
+     if (str != NULL)
diff --git a/mingw32-libxslt-1.1.24-win32-shared.patch b/mingw32-libxslt-1.1.24-win32-shared.patch
new file mode 100644
index 0000000..1866126
--- /dev/null
+++ b/mingw32-libxslt-1.1.24-win32-shared.patch
@@ -0,0 +1,21 @@
+--- libxslt-1.1.24.orig/configure.in	2008-05-13 16:40:31.000000000 +0100
++++ libxslt-1.1.24/configure.in	2008-10-25 23:33:10.000000000 +0100
+@@ -3,6 +3,7 @@
+ AC_INIT(libxslt/xslt.c)
+ AM_CONFIG_HEADER(config.h)
+ AC_CANONICAL_HOST
++AC_LIBTOOL_WIN32_DLL
+ 
+ dnl
+ dnl libxslt is the main part of the package
+--- libxslt-1.1.24.orig/libxslt/Makefile.am	2007-01-03 15:11:57.000000000 +0000
++++ libxslt-1.1.24/libxslt/Makefile.am	2008-10-25 23:33:36.000000000 +0100
+@@ -51,7 +51,7 @@
+ 	libxslt.h
+ 
+ libxslt_la_LIBADD = $(EXTRA_LIBS)
+-libxslt_la_LDFLAGS = -version-info @LIBXSLT_VERSION_INFO@
++libxslt_la_LDFLAGS = -version-info @LIBXSLT_VERSION_INFO@ -no-undefined
+ 
+ man_MANS = libxslt.3
+ 
diff --git a/mingw32-libxslt.spec b/mingw32-libxslt.spec
new file mode 100644
index 0000000..4f25989
--- /dev/null
+++ b/mingw32-libxslt.spec
@@ -0,0 +1,139 @@
+%global __strip %{_mingw32_strip}
+%global __objdump %{_mingw32_objdump}
+%global _use_internal_dependency_generator 0
+%global __find_requires %{_mingw32_findrequires}
+%global __find_provides %{_mingw32_findprovides}
+
+Name:           mingw32-libxslt
+Version:        1.1.24
+Release:        7%{?dist}
+Summary:        MinGW Windows Library providing the Gnome XSLT engine
+
+License:        MIT
+Group:          Development/Libraries
+URL:            http://xmlsoft.org/XSLT/
+Source0:        ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildArch:      noarch
+
+# Fix for CVE-2008-2935
+Patch1:         libexslt-rc4.patch
+
+# Fix compilation on MinGW environments
+Patch1000:      mingw32-libxslt-1.1.24-win32-shared.patch
+
+BuildRequires:  mingw32-filesystem >= 30
+BuildRequires:  mingw32-gcc
+BuildRequires:  mingw32-binutils
+BuildRequires:  mingw32-dlfcn
+BuildRequires:  mingw32-iconv
+BuildRequires:  mingw32-libgcrypt
+BuildRequires:  mingw32-libxml2 >= 2.7.2-3
+BuildRequires:  pkgconfig
+BuildRequires:  autoconf, automake, libtool
+
+Requires:       mingw32-libxml2 >= 2.7.2-3
+Requires:       pkgconfig
+
+
+%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 static
+Summary:        Static version of the MinGW Windows LibXSLT library
+Requires:       %{name} = %{version}-%{release}
+Group:          Development/Libraries
+
+%description static
+Static version of the MinGW Windows LibXSLT library.
+
+
+%prep
+%setup -q -n libxslt-%{version}
+
+# The native version of libxslt contains a multilib patch, but
+# this isn't interesting for MinGW environments
+#%patch0 -p1
+
+%patch1 -p0
+
+%patch1000 -p1
+
+libtoolize --force --copy
+autoreconf
+
+
+%build
+PATH=%{_mingw32_bindir}:$PATH \
+%{_mingw32_configure} --without-python --enable-shared
+make %{?_smp_mflags}
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT install
+
+# Remove doc and man which duplicate stuff already in Fedora native package.
+rm -r $RPM_BUILD_ROOT%{_mingw32_docdir}
+rm -r $RPM_BUILD_ROOT%{_mingw32_mandir}
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%files
+%defattr(-,root,root,-)
+%doc COPYING Copyright
+%{_mingw32_bindir}/xslt-config
+%{_mingw32_bindir}/xsltproc.exe
+%{_mingw32_includedir}/libexslt
+%{_mingw32_includedir}/libxslt
+#%{_mingw32_bindir}/libexslt.dll
+#%{_mingw32_libdir}/libexslt.dll.a
+%{_mingw32_libdir}/libexslt.la
+%{_mingw32_bindir}/libxslt-1.dll
+%{_mingw32_libdir}/libxslt.dll.a
+%{_mingw32_libdir}/libxslt.la
+%{_mingw32_libdir}/pkgconfig/libexslt.pc
+%{_mingw32_libdir}/pkgconfig/libxslt.pc
+%{_mingw32_libdir}/xsltConf.sh
+%{_mingw32_datadir}/aclocal/libxslt.m4
+
+
+%files static
+%defattr(-,root,root,-)
+%{_mingw32_libdir}/libexslt.a
+%{_mingw32_libdir}/libxslt.a
+
+
+%changelog
+* Fri May 22 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.1.24-7
+- Use %%global instead of %%define
+- Dropped the reference to the multilib patch as it isn't used for MinGW
+- Fixed dangling-relative-symlink rpmlint warning
+
+* Sat May  9 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.1.24-6
+- Added some more comments in the .spec file
+- Added -static subpackage
+- Dropped the 'gzip ChangeLog' line as the ChangeLog isn't bundled anyway
+- Fixed %%defattr line
+
+* Fri Feb 20 2009 Richard W.M. Jones <rjones at redhat.com> - 1.1.24-5
+- Rebuild for mingw32-gcc 4.4
+
+* Fri Feb  6 2009 Richard W.M. Jones <rjones at redhat.com> - 1.1.24-4
+- Include license file.
+
+* Fri Jan 23 2009 Richard W.M. Jones <rjones at redhat.com> - 1.1.24-3
+- Use _smp_mflags.
+- Rebuild libtool.
+- +BRs dlfcn and iconv.
+
+* Sat Oct 25 2008 Richard W.M. Jones <rjones at redhat.com> - 1.1.24-2
+- Initial RPM release.
diff --git a/sources b/sources
index e69de29..2b5c9b9 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+e83ec5d27fc4c10c6f612879bea9a153  libxslt-1.1.24.tar.gz


More information about the scm-commits mailing list