diff --git a/.libxml2.metadata b/.libxml2.metadata new file mode 100644 index 0000000..1e53067 --- /dev/null +++ b/.libxml2.metadata @@ -0,0 +1 @@ +eb3e2146c6d68aea5c2a4422ed76fe196f933c21 SOURCES/libxml2-2.9.1.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/libxml2-2.9.0-do-not-check-crc.patch b/SOURCES/libxml2-2.9.0-do-not-check-crc.patch new file mode 100644 index 0000000..3e65077 --- /dev/null +++ b/SOURCES/libxml2-2.9.0-do-not-check-crc.patch @@ -0,0 +1,35 @@ +diff -up libxml2-2.9.0/xzlib.c.do-not-check-crc libxml2-2.9.0/xzlib.c +--- libxml2-2.9.0/xzlib.c.do-not-check-crc 2012-09-11 05:52:46.000000000 +0200 ++++ libxml2-2.9.0/xzlib.c 2012-11-19 19:28:42.431700534 +0100 +@@ -552,17 +552,20 @@ xz_decomp(xz_statep state) + #ifdef HAVE_ZLIB_H + if (state->how == GZIP) { + if (gz_next4(state, &crc) == -1 || gz_next4(state, &len) == -1) { +- xz_error(state, LZMA_DATA_ERROR, "unexpected end of file"); +- return -1; +- } +- if (crc != state->zstrm.adler) { +- xz_error(state, LZMA_DATA_ERROR, "incorrect data check"); +- return -1; +- } +- if (len != (state->zstrm.total_out & 0xffffffffL)) { +- xz_error(state, LZMA_DATA_ERROR, "incorrect length check"); +- return -1; +- } ++ /* ++ xz_error(state, LZMA_DATA_ERROR, "unexpected end of file"); ++ return -1; ++ */ ++ } else { ++ if (crc != state->zstrm.adler) { ++ xz_error(state, LZMA_DATA_ERROR, "incorrect data check"); ++ return -1; ++ } ++ if (len != (state->zstrm.total_out & 0xffffffffL)) { ++ xz_error(state, LZMA_DATA_ERROR, "incorrect length check"); ++ return -1; ++ } ++ } + state->strm.avail_in = 0; + state->strm.next_in = NULL; + state->strm.avail_out = 0; diff --git a/SOURCES/libxml2-Fix-a-regression-in-xmlGetDocCompressMode.patch b/SOURCES/libxml2-Fix-a-regression-in-xmlGetDocCompressMode.patch new file mode 100644 index 0000000..c492149 --- /dev/null +++ b/SOURCES/libxml2-Fix-a-regression-in-xmlGetDocCompressMode.patch @@ -0,0 +1,129 @@ +From 268e6a3d615a14c6f6f1e8cf3d8c1e5c42ad1b41 Mon Sep 17 00:00:00 2001 +From: Daniel Veillard +Date: Fri, 10 May 2013 14:01:46 +0800 +Subject: [PATCH] Fix a regression in xmlGetDocCompressMode() +To: libvir-list@redhat.com + +The switch to xzlib had for consequence that the compression +level of the input was not gathered anymore in ctxt->input->buf, +then the parser compression flags was left to -1 and propagated +to the resulting document. +Fix the I/O layer to get compression detection in xzlib, +then carry it in the input buffer and the resulting document + + This should fix + https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3456 + +Signed-off-by: Daniel Veillard +--- + parser.c | 4 ++++ + xmlIO.c | 17 +++++++++++++++++ + xzlib.c | 25 +++++++++++++++++++++++++ + xzlib.h | 1 + + 4 files changed, 47 insertions(+) + +diff --git a/parser.c b/parser.c +index ee429f3..f30588c 100644 +--- a/parser.c ++++ b/parser.c +@@ -10681,6 +10681,10 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) { + ctxt->sax->startDocument(ctxt->userData); + if (ctxt->instate == XML_PARSER_EOF) + return(-1); ++ if ((ctxt->myDoc != NULL) && (ctxt->input != NULL) && ++ (ctxt->input->buf != NULL) && (ctxt->input->buf->compressed >= 0)) { ++ ctxt->myDoc->compression = ctxt->input->buf->compressed; ++ } + + /* + * The Misc part of the Prolog +diff --git a/xmlIO.c b/xmlIO.c +index 847cb7e..fc4e111 100644 +--- a/xmlIO.c ++++ b/xmlIO.c +@@ -2669,6 +2669,12 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) { + #endif + } + #endif ++#ifdef HAVE_LZMA_H ++ if ((xmlInputCallbackTable[i].opencallback == xmlXzfileOpen) && ++ (strcmp(URI, "-") != 0)) { ++ ret->compressed = __libxml2_xzcompressed(context); ++ } ++#endif + } + else + xmlInputCallbackTable[i].closecallback (context); +@@ -3325,6 +3331,17 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) { + if (res < 0) { + return(-1); + } ++ ++ /* ++ * try to establish compressed status of input if not done already ++ */ ++ if (in->compressed == -1) { ++#ifdef HAVE_LZMA_H ++ if (in->readcallback == xmlXzfileRead) ++ in->compressed = __libxml2_xzcompressed(in->context); ++#endif ++ } ++ + len = res; + if (in->encoder != NULL) { + unsigned int use; +diff --git a/xzlib.c b/xzlib.c +index 928bd17..150e803 100644 +--- a/xzlib.c ++++ b/xzlib.c +@@ -182,12 +182,37 @@ xz_open(const char *path, int fd, const char *mode ATTRIBUTE_UNUSED) + return (xzFile) state; + } + ++static int ++xz_compressed(xzFile f) { ++ xz_statep state; ++ ++ if (f == NULL) ++ return(-1); ++ state = (xz_statep) f; ++ if (state->init <= 0) ++ return(-1); ++ ++ switch (state->how) { ++ case COPY: ++ return(0); ++ case GZIP: ++ case LZMA: ++ return(1); ++ } ++ return(-1); ++} ++ + xzFile + __libxml2_xzopen(const char *path, const char *mode) + { + return xz_open(path, -1, mode); + } + ++int ++__libxml2_xzcompressed(xzFile f) { ++ return xz_compressed(f); ++} ++ + xzFile + __libxml2_xzdopen(int fd, const char *mode) + { +diff --git a/xzlib.h b/xzlib.h +index 43c75e1..29ba55e 100644 +--- a/xzlib.h ++++ b/xzlib.h +@@ -15,4 +15,5 @@ xzFile __libxml2_xzopen(const char *path, const char *mode); + xzFile __libxml2_xzdopen(int fd, const char *mode); + int __libxml2_xzread(xzFile file, void *buf, unsigned len); + int __libxml2_xzclose(xzFile file); ++int __libxml2_xzcompressed(xzFile f); + #endif /* LIBXML2_XZLIB_H */ +-- +1.8.3.1 + diff --git a/SOURCES/libxml2-multilib.patch b/SOURCES/libxml2-multilib.patch new file mode 100644 index 0000000..138d38f --- /dev/null +++ b/SOURCES/libxml2-multilib.patch @@ -0,0 +1,24 @@ +*** XML/xml2-config.in.orig 2006-06-06 16:35:56.000000000 +0200 +--- XML/xml2-config.in 2006-06-06 16:36:24.000000000 +0200 +*************** +*** 3,9 **** + prefix=@prefix@ + exec_prefix=@exec_prefix@ + includedir=@includedir@ +! libdir=@libdir@ + + usage() + { +--- 3,14 ---- + prefix=@prefix@ + exec_prefix=@exec_prefix@ + includedir=@includedir@ +! if [ "`ldd /bin/sh | grep lib64`" = "" ] +! then +! libdir=${exec_prefix}/lib +! else +! libdir=${exec_prefix}/lib64 +! fi + + usage() + { diff --git a/SPECS/libxml2.spec b/SPECS/libxml2.spec new file mode 100644 index 0000000..6d44840 --- /dev/null +++ b/SPECS/libxml2.spec @@ -0,0 +1,360 @@ +Summary: Library providing XML and HTML support +Name: libxml2 +Version: 2.9.1 +Release: 2%{?dist}%{?extra_release} +License: MIT +Group: Development/Libraries +Source: ftp://xmlsoft.org/libxml2/libxml2-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-root +BuildRequires: python python-devel zlib-devel pkgconfig xz-devel +URL: http://xmlsoft.org/ +Patch0: libxml2-multilib.patch +Patch1: libxml2-2.9.0-do-not-check-crc.patch + +Patch100: libxml2-Fix-a-regression-in-xmlGetDocCompressMode.patch + +%description +This library allows to manipulate XML files. It includes support +to read, modify and write XML and HTML files. There is DTDs support +this includes parsing and validation even with complex DtDs, either +at parse time or later once the document has been modified. The output +can be a simple SAX stream or and in-memory DOM like representations. +In this case one can use the built-in XPath and XPointer implementation +to select sub nodes or ranges. A flexible Input/Output mechanism is +available, with existing HTTP and FTP modules and combined to an +URI library. + +%package devel +Summary: Libraries, includes, etc. to develop XML and HTML applications +Group: Development/Libraries +Requires: libxml2 = %{version}-%{release} +Requires: zlib-devel +Requires: xz-devel +Requires: pkgconfig + +%description devel +Libraries, include files, etc you can use to develop XML applications. +This library allows to manipulate XML files. It includes support +to read, modify and write XML and HTML files. There is DTDs support +this includes parsing and validation even with complex DtDs, either +at parse time or later once the document has been modified. The output +can be a simple SAX stream or and in-memory DOM like representations. +In this case one can use the built-in XPath and XPointer implementation +to select sub nodes or ranges. A flexible Input/Output mechanism is +available, with existing HTTP and FTP modules and combined to an +URI library. + +%package static +Summary: Static library for libxml2 +Group: Development/Libraries +Requires: libxml2 = %{version}-%{release} + +%description static +Static library for libxml2 provided for specific uses or shaving a few +microseconds when parsing, do not link to them for generic purpose packages. + +%package python +Summary: Python bindings for the libxml2 library +Group: Development/Libraries +Requires: libxml2 = %{version}-%{release} + +%description python +The libxml2-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by the libxml2 library to manipulate XML files. + +This library allows to manipulate XML files. It includes support +to read, modify and write XML and HTML files. There is DTDs support +this includes parsing and validation even with complex DTDs, either +at parse time or later once the document has been modified. + +%prep +%setup -q +%patch0 -p1 +# workaround for #877567 - Very weird bug gzip decompression bug in "recent" libxml2 versions +%patch1 -p1 -b .do-not-check-crc + +%patch100 -p1 + +%build +%configure +make %{_smp_mflags} + +%install +rm -fr %{buildroot} + +make install DESTDIR=%{buildroot} + +# multiarch crazyness on timestamp differences or Makefile/binaries for examples +touch -m --reference=$RPM_BUILD_ROOT/%{_includedir}/libxml2/libxml/parser.h $RPM_BUILD_ROOT/%{_bindir}/xml2-config + +rm -f $RPM_BUILD_ROOT%{_libdir}/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libxml2-%{version}/* +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libxml2-python-%{version}/* +(cd doc/examples ; make clean ; rm -rf .deps Makefile) +gzip -9 -c doc/libxml2-api.xml > doc/libxml2-api.xml.gz + +%check +make runtests + +%clean +rm -fr %{buildroot} + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-, root, root) + +%doc AUTHORS NEWS README Copyright TODO +%doc %{_mandir}/man1/xmllint.1* +%doc %{_mandir}/man1/xmlcatalog.1* +%doc %{_mandir}/man3/libxml.3* + +%{_libdir}/lib*.so.* +%{_bindir}/xmllint +%{_bindir}/xmlcatalog + +%files devel +%defattr(-, root, root) + +%doc %{_mandir}/man1/xml2-config.1* +%doc AUTHORS NEWS README Copyright +%doc doc/*.html doc/html doc/*.gif doc/*.png +%doc doc/tutorial doc/libxml2-api.xml.gz +%doc doc/examples +%doc %dir %{_datadir}/gtk-doc/html/libxml2 +%doc %{_datadir}/gtk-doc/html/libxml2/*.devhelp +%doc %{_datadir}/gtk-doc/html/libxml2/*.html +%doc %{_datadir}/gtk-doc/html/libxml2/*.png +%doc %{_datadir}/gtk-doc/html/libxml2/*.css + +%{_libdir}/lib*.so +%{_libdir}/*.sh +%{_includedir}/* +%{_bindir}/xml2-config +%{_datadir}/aclocal/libxml.m4 +%{_libdir}/pkgconfig/libxml-2.0.pc + +%files static +%defattr(-, root, root) + +%{_libdir}/*a + +%files python +%defattr(-, root, root) + +%{_libdir}/python*/site-packages/libxml2.py* +%{_libdir}/python*/site-packages/drv_libxml2.py* +%{_libdir}/python*/site-packages/libxml2mod* +%doc python/TODO +%doc python/libxml2class.txt +%doc python/tests/*.py +%doc doc/*.py +%doc doc/python.html + +%changelog +* Fri Nov 15 2013 Daniel Veillard - 2.9.1-2 +- Fix a regression in xmlGetDocCompressMode() rhbz#963716 + +* Fri Apr 19 2013 Daniel Veillard - 2.9.1-1 +- upstream release of 2.9.1 +- a couple more API entry point +- compatibility with python3 +- a lot of bug fixes + +* Mon Feb 11 2013 Daniel Veillard - 2.9.0-4 +- fix --nocheck build which I broke in october rhbz#909767 + +* Mon Nov 19 2012 Jaroslav Reznik - 2.9.0-3 +- workaround for crc/len check failure, rhbz#877567 + +* Thu Oct 11 2012 Daniel Veillard - 2.9.0-2 +- remaining cleanups from merge bug rhbz#226079 +- do not put the docs in the main package, only in -devel rhbz#864731 + +* Tue Sep 11 2012 Daniel Veillard - 2.9.0-1 +- upstream release of 2.9.0 +- A few new API entry points +- More resilient push parser mode +- A lot of portability improvement +- Faster XPath evaluation +- a lot of bug fixes and smaller improvement + +* Fri Aug 10 2012 Daniel Veillard - 2.9.0-0rc1 +- upstream release candidate 1 of 2.9.0 +- introduce a small API change, but ABI compatible, see + https://mail.gnome.org/archives/xml/2012-August/msg00005.html + patches for php, gcc/libjava and evolution-data-connector are upstream + Grab me in cases of problems veillard@redhat.com +- many bug fixes including security aspects and small improvements + +* Thu Jul 19 2012 Fedora Release Engineering - 2.8.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 23 2012 Daniel Veillard - 2.8.0-1 +- upstream release of 2.8.0 +- add lzma compression support +- many bug fixes and small improvements + +* Fri Jan 13 2012 Fedora Release Engineering - 2.7.8-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Mar 4 2011 Daniel Veillard - 2.7.8-6 +- fix a double free in XPath CVE-2010-4494 bug 665965 + +* Tue Feb 08 2011 Fedora Release Engineering - 2.7.8-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Nov 5 2010 Daniel Veillard - 2.7.8-4 +- reactivate shared libs versionning script + +* Thu Nov 4 2010 Daniel Veillard - 2.7.8-1 +- Upstream release of 2.7.8 +- various bug fixes, including potential crashes +- new non-destructive formatting option +- date parsing updated to RFC 5646 + +* Wed Jul 21 2010 David Malcolm - 2.7.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Mon Mar 15 2010 Daniel Veillard - 2.7.7-1 +- Upstream release of 2.7.7 +- fix serious trouble with zlib >= 1.2.4 +- xmllint new option --xpath +- various HTML parser improvements +- includes a number of nug fixes + +* Tue Oct 6 2009 Daniel Veillard - 2.7.6-1 +- Upstream release of 2.7.6 +- restore thread support off by default in 2.7.5 + +* Thu Sep 24 2009 Daniel Veillard - 2.7.5-1 +- Upstream release of 2.7.5 +- fix a couple of Relax-NG validation problems +- couple more fixes + +* Tue Sep 15 2009 Daniel Veillard - 2.7.4-2 +- fix a problem with little data at startup affecting inkscape #523002 + +* Thu Sep 10 2009 Daniel Veillard - 2.7.4-1 +- upstream release 2.7.4 +- symbol versioning of libxml2 shared libs +- very large number of bug fixes + +* Mon Aug 10 2009 Daniel Veillard - 2.7.3-4 +- two patches for parsing problems CVE-2009-2414 and CVE-2009-2416 + +* Sat Jul 25 2009 Fedora Release Engineering - 2.7.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 2.7.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Jan 18 2009 Daniel Veillard - 2.7.3-1 +- new release 2.7.3 +- limit default max size of text nodes +- special parser mode for PHP +- bug fixes and more compiler checks + +* Wed Dec 3 2008 Ignacio Vazquez-Abrams - 2.7.2-7 +- Pull back into Python 2.6 + +* Wed Dec 3 2008 Caolán McNamara - 2.7.2-6 +- AutoProvides requires BuildRequires pkgconfig + +* Wed Dec 3 2008 Caolán McNamara - 2.7.2-5 +- rebuild to get provides(libxml-2.0) into HEAD rawhide + +* Mon Dec 1 2008 Ignacio Vazquez-Abrams - 2.7.2-4 +- Rebuild for pkgconfig logic + +* Fri Nov 28 2008 Ignacio Vazquez-Abrams - 2.7.2-3 +- Rebuild for Python 2.6 + +* Wed Nov 12 2008 Daniel Veillard - 2.7.2-2.fc11 +- two patches for size overflows problems CVE-2008-4225 and CVE-2008-4226 + +* Fri Oct 3 2008 Daniel Veillard 2.7.2-1.fc10 +- new release 2.7.2 +- Fixes the known problems in 2.7.1 +- increase the set of options when saving documents + +* Thu Oct 2 2008 Daniel Veillard 2.7.1-2.fc10 +- fix a nasty bug in 2.7.x, http://bugzilla.gnome.org/show_bug.cgi?id=554660 + +* Mon Sep 1 2008 Daniel Veillard 2.7.1-1.fc10 +- fix python serialization which was broken in 2.7.0 +- Resolve: rhbz#460774 + +* Sat Aug 30 2008 Daniel Veillard 2.7.0-1.fc10 +- upstream release of 2.7.0 +- switch to XML 1.0 5th edition +- switch to RFC 3986 for URI parsing +- better entity handling +- option to remove hardcoded limitations in the parser +- more testing +- a new API to allocate entity nodes +- and lot of fixes and clanups + +* Mon Aug 25 2008 Daniel Veillard 2.6.32-4.fc10 +- fix for entities recursion problem +- Resolve: rhbz#459714 + +* Fri May 30 2008 Daniel Veillard 2.6.32-3.fc10 +- cleanup based on Fedora packaging guidelines, should fix #226079 +- separate a -static package + +* Thu May 15 2008 Daniel Veillard 2.6.32-2.fc10 +- try to fix multiarch problems like #440206 + +* Tue Apr 8 2008 Daniel Veillard 2.6.32-1.fc9 +- upstream release 2.6.32 see http://xmlsoft.org/news.html +- many bug fixed upstream + +* Wed Feb 20 2008 Fedora Release Engineering - 2.6.31-2 +- Autorebuild for GCC 4.3 + +* Fri Jan 11 2008 Daniel Veillard 2.6.31-1.fc9 +- upstream release 2.6.31 see http://xmlsoft.org/news.html +- many bug fixed upstream + +* Thu Aug 23 2007 Daniel Veillard 2.6.30-1 +- upstream release 2.6.30 see http://xmlsoft.org/news.html +- many bug fixed upstream + +* Tue Jun 12 2007 Daniel Veillard 2.6.29-1 +- upstream release 2.6.29 see http://xmlsoft.org/news.html +- many bug fixed upstream + +* Wed May 16 2007 Matthias Clasen 2.6.28-2 +- Bump revision to fix N-V-R problem + +* Tue Apr 17 2007 Daniel Veillard 2.6.28-1 +- upstream release 2.6.28 see http://xmlsoft.org/news.html +- many bug fixed upstream + +* Thu Dec 7 2006 Jeremy Katz - 2.6.27-2 +- rebuild against python 2.5 + +* Wed Oct 25 2006 Daniel Veillard 2.6.27-1 +- upstream release 2.6.27 see http://xmlsoft.org/news.html +- very large amount of bug fixes reported upstream + +* Wed Jul 12 2006 Jesse Keating - 2.6.26-2.1.1 +- rebuild + +* Wed Jul 12 2006 Jesse Keating - 2.6.26-2.1 +- rebuild + +* Wed Jun 7 2006 Daniel Veillard 2.6.26-2 +- fix bug #192873 +* Tue Jun 6 2006 Daniel Veillard 2.6.26-1 +- upstream release 2.6.26 see http://xmlsoft.org/news.html + +* Tue Jun 6 2006 Daniel Veillard +- upstream release 2.6.25 broken, do not ship ! +