[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