rpms/mingw32-libxslt/F-10 libexslt-rc4.patch, NONE, 1.1 mingw32-libxslt-1.1.24-win32-shared.patch, NONE, 1.1 mingw32-libxslt.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Erik van Pienbroek epienbro at fedoraproject.org
Sun May 24 12:42:36 UTC 2009


Author: epienbro

Update of /cvs/pkgs/rpms/mingw32-libxslt/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv17212/F-10

Modified Files:
	.cvsignore sources 
Added Files:
	libexslt-rc4.patch mingw32-libxslt-1.1.24-win32-shared.patch 
	mingw32-libxslt.spec 
Log Message:
Initial import


libexslt-rc4.patch:

--- NEW FILE libexslt-rc4.patch ---
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)

mingw32-libxslt-1.1.24-win32-shared.patch:

--- NEW FILE mingw32-libxslt-1.1.24-win32-shared.patch ---
--- 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
 


--- NEW FILE mingw32-libxslt.spec ---
%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.


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/mingw32-libxslt/F-10/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- .cvsignore	23 May 2009 05:40:11 -0000	1.1
+++ .cvsignore	24 May 2009 12:42:06 -0000	1.2
@@ -0,0 +1 @@
+libxslt-1.1.24.tar.gz


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/mingw32-libxslt/F-10/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- sources	23 May 2009 05:40:11 -0000	1.1
+++ sources	24 May 2009 12:42:06 -0000	1.2
@@ -0,0 +1 @@
+e83ec5d27fc4c10c6f612879bea9a153  libxslt-1.1.24.tar.gz




More information about the scm-commits mailing list