rpms/mingw32-libxslt/devel libxslt-1.1.25-locking.patch, NONE, 1.1 mingw32-libxslt.spec, 1.5, 1.6
epienbro
epienbro at fedoraproject.org
Mon Sep 21 21:45:50 UTC 2009
- Previous message (by thread): rpms/mingw32-pango/devel .cvsignore, 1.8, 1.9 mingw32-pango.spec, 1.11, 1.12 pango.modules, 1.1, 1.2 sources, 1.8, 1.9
- Next message (by thread): devel/jpackage-utils jpackage-utils.spec,1.49,1.50
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: epienbro
Update of /cvs/pkgs/rpms/mingw32-libxslt/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv15587
Modified Files:
mingw32-libxslt.spec
Added Files:
libxslt-1.1.25-locking.patch
Log Message:
Fix a locking bug in 1.1.25 (patch from native libxslt package)
libxslt-1.1.25-locking.patch:
extensions.c | 34 ++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)
--- NEW FILE libxslt-1.1.25-locking.patch ---
commit 2e8defa7ccef2f76fb1cbfe9e9673d8e4b6cf1d6
Author: Daniel Veillard <veillard at redhat.com>
Date: Sun Sep 20 11:51:52 2009 +0200
595612 Try to fix some locking problems
* libxslt/extensions.c: there were still cases where the normal
code path could led to trying to mtake again the extension lock
go over all entry points of the module and clean things up
diff --git a/libxslt/extensions.c b/libxslt/extensions.c
index ebb81f5..6187b7a 100644
--- a/libxslt/extensions.c
+++ b/libxslt/extensions.c
@@ -313,8 +313,6 @@ typedef void (*exsltRegisterFunction) (void);
* by LIBXSLT_DEFAULT_PLUGINS_PATH() which is determined at
* compile time.
*
- * Always called with xsltExtMutex lock taken.
- *
* Returns 0 if successful, -1 in case of error.
*/
@@ -550,10 +548,14 @@ xsltRegisterExtPrefix(xsltStylesheetPtr style,
if (xsltExtensionsHash != NULL) {
xsltExtModulePtr module;
+ xmlMutexLock(xsltExtMutex);
module = xmlHashLookup(xsltExtensionsHash, URI);
+ xmlMutexUnlock(xsltExtMutex);
if (NULL == module) {
if (!xsltExtModuleRegisterDynamic(URI)) {
+ xmlMutexLock(xsltExtMutex);
module = xmlHashLookup(xsltExtensionsHash, URI);
+ xmlMutexUnlock(xsltExtMutex);
}
}
if (module != NULL) {
@@ -1669,18 +1671,13 @@ xsltExtElementLookup(xsltTransformContextPtr ctxt,
if ((name == NULL) || (URI == NULL))
return (NULL);
- xmlMutexLock(xsltExtMutex);
-
if ((ctxt != NULL) && (ctxt->extElements != NULL)) {
XML_CAST_FPTR(ret) = xmlHashLookup2(ctxt->extElements, name, URI);
if (ret != NULL) {
- xmlMutexUnlock(xsltExtMutex);
return(ret);
}
}
- xmlMutexUnlock(xsltExtMutex);
-
ret = xsltExtModuleElementLookup(name, URI);
return (ret);
@@ -1707,19 +1704,23 @@ xsltExtModuleElementLookup(const xmlChar * name, const xmlChar * URI)
ext = (xsltExtElementPtr) xmlHashLookup2(xsltElementsHash, name, URI);
+ xmlMutexUnlock(xsltExtMutex);
+
/*
* if function lookup fails, attempt a dynamic load on
* supported platforms
*/
if (NULL == ext) {
if (!xsltExtModuleRegisterDynamic(URI)) {
+ xmlMutexLock(xsltExtMutex);
+
ext = (xsltExtElementPtr)
xmlHashLookup2(xsltElementsHash, name, URI);
+
+ xmlMutexUnlock(xsltExtMutex);
}
}
- xmlMutexUnlock(xsltExtMutex);
-
if (ext == NULL)
return (NULL);
return (ext->transform);
@@ -1747,13 +1748,18 @@ xsltExtModuleElementPreComputeLookup(const xmlChar * name,
ext = (xsltExtElementPtr) xmlHashLookup2(xsltElementsHash, name, URI);
+ xmlMutexUnlock(xsltExtMutex);
+
if (ext == NULL) {
if (!xsltExtModuleRegisterDynamic(URI)) {
+ xmlMutexLock(xsltExtMutex);
+
ext = (xsltExtElementPtr)
xmlHashLookup2(xsltElementsHash, name, URI);
+
+ xmlMutexUnlock(xsltExtMutex);
}
}
- xmlMutexUnlock(xsltExtMutex);
if (ext == NULL)
return (NULL);
@@ -1856,15 +1862,19 @@ xsltExtModuleTopLevelLookup(const xmlChar * name, const xmlChar * URI)
XML_CAST_FPTR(ret) = xmlHashLookup2(xsltTopLevelsHash, name, URI);
+ xmlMutexUnlock(xsltExtMutex);
+
/* if lookup fails, attempt a dynamic load on supported platforms */
if (NULL == ret) {
if (!xsltExtModuleRegisterDynamic(URI)) {
+ xmlMutexLock(xsltExtMutex);
+
XML_CAST_FPTR(ret) = xmlHashLookup2(xsltTopLevelsHash, name, URI);
+
+ xmlMutexUnlock(xsltExtMutex);
}
}
- xmlMutexUnlock(xsltExtMutex);
-
return (ret);
}
Index: mingw32-libxslt.spec
===================================================================
RCS file: /cvs/pkgs/rpms/mingw32-libxslt/devel/mingw32-libxslt.spec,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -p -r1.5 -r1.6
--- mingw32-libxslt.spec 17 Sep 2009 17:48:25 -0000 1.5
+++ mingw32-libxslt.spec 21 Sep 2009 21:45:50 -0000 1.6
@@ -7,7 +7,7 @@
Name: mingw32-libxslt
Version: 1.1.25
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: MinGW Windows Library providing the Gnome XSLT engine
License: MIT
@@ -18,6 +18,8 @@ BuildRoot: %{_tmppath}/%{name}-%{ve
BuildArch: noarch
+Patch1: libxslt-1.1.25-locking.patch
+
# Fix compilation on MinGW environments
Patch1000: mingw32-libxslt-dont-use-pthread.patch
@@ -61,6 +63,8 @@ Static version of the MinGW Windows LibX
# this isn't interesting for MinGW environments
#%patch0 -p1
+%patch1 -p1
+
%patch1000 -p1
libtoolize --force --copy
@@ -112,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Mon Sep 21 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.1.25-2
+- Fix a locking bug in 1.1.25 (patch from native libxslt package)
+
* Thu Sep 17 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.1.25-1
- Update to 1.1.25
- Dropped upstreamed CVE patch
- Previous message (by thread): rpms/mingw32-pango/devel .cvsignore, 1.8, 1.9 mingw32-pango.spec, 1.11, 1.12 pango.modules, 1.1, 1.2 sources, 1.8, 1.9
- Next message (by thread): devel/jpackage-utils jpackage-utils.spec,1.49,1.50
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list