summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron>2014-11-03 19:39:07 +0000
committertron <tron>2014-11-03 19:39:07 +0000
commit43c14a04b1e695d3af6388b6d3c725594df4a867 (patch)
tree5667930e659bf4dec4f31d40349d11db64579dc8
parent8f79f8c969d6ada81e7883072dbefdefa5faea8d (diff)
downloadpkgsrc-43c14a04b1e695d3af6388b6d3c725594df4a867.tar.gz
Pullup ticket #4538 - requested by drochner
textproc/libxml2: security update textproc/py-libxml2: security update Revisions pulled up: - textproc/libxml2/Makefile 1.132-1.133 - textproc/libxml2/PLIST 1.45 - textproc/libxml2/distinfo 1.104-1.105 - textproc/libxml2/patches/patch-ba 1.3 - textproc/libxml2/patches/patch-parser.c deleted - textproc/libxml2/patches/patch-xzlib.c deleted - textproc/py-libxml2/Makefile 1.50 - textproc/py-libxml2/distinfo 1.31 - textproc/py-libxml2/patches/patch-ab 1.3 - textproc/py-libxml2/patches/patch-ac 1.2 - textproc/py-libxml2/patches/patch-drv_libxml2.py deleted --- Module Name: pkgsrc Committed By: drochner Date: Fri Oct 17 15:46:47 UTC 2014 Modified Files: pkgsrc/textproc/libxml2: Makefile PLIST distinfo Removed Files: pkgsrc/textproc/libxml2/patches: patch-parser.c patch-xzlib.c Log Message: update to 2.9.2 -security fixes: -Fix for CVE-2014-3660 billion laugh variant -CVE-2014-0191 Do not fetch external parameter entities (was patched in pkgsrc) -many bugfixes, doc fixes, cleanup -added cmake macro --- Module Name: pkgsrc Committed By: drochner Date: Mon Oct 20 19:11:23 UTC 2014 Modified Files: pkgsrc/textproc/py-libxml2: Makefile distinfo pkgsrc/textproc/py-libxml2/patches: patch-ab patch-ac Removed Files: pkgsrc/textproc/py-libxml2/patches: patch-drv_libxml2.py Log Message: sync w/ base pkg --- Module Name: pkgsrc Committed By: drochner Date: Tue Oct 28 18:55:57 UTC 2014 Modified Files: pkgsrc/textproc/libxml2: Makefile distinfo Added Files: pkgsrc/textproc/libxml2/patches: patch-ba Log Message: pull in two patches from upstream to fix regressions: -catalog initialization problem -problem with entity expansion This hopefully fixes build failures in KDE3 packages, reported by Joerg. bump PKGREV
-rw-r--r--textproc/libxml2/Makefile6
-rw-r--r--textproc/libxml2/PLIST3
-rw-r--r--textproc/libxml2/distinfo11
-rw-r--r--textproc/libxml2/patches/patch-ba27
-rw-r--r--textproc/libxml2/patches/patch-parser.c28
-rw-r--r--textproc/libxml2/patches/patch-xzlib.c54
-rw-r--r--textproc/py-libxml2/Makefile4
-rw-r--r--textproc/py-libxml2/distinfo13
-rw-r--r--textproc/py-libxml2/patches/patch-ab180
-rw-r--r--textproc/py-libxml2/patches/patch-ac6
-rw-r--r--textproc/py-libxml2/patches/patch-drv_libxml2.py40
11 files changed, 52 insertions, 320 deletions
diff --git a/textproc/libxml2/Makefile b/textproc/libxml2/Makefile
index 587f77e78c1..eaa75dfaf0b 100644
--- a/textproc/libxml2/Makefile
+++ b/textproc/libxml2/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.130 2014/07/18 10:29:37 ryoon Exp $
+# $NetBSD: Makefile,v 1.130.2.1 2014/11/03 19:39:07 tron Exp $
-DISTNAME= libxml2-2.9.1
-PKGREVISION= 2
+DISTNAME= libxml2-2.9.2
+PKGREVISION= 1
CATEGORIES= textproc
MASTER_SITES= ftp://xmlsoft.org/libxml2/ \
http://xmlsoft.org/sources/
diff --git a/textproc/libxml2/PLIST b/textproc/libxml2/PLIST
index 593be8e00f1..6cceb695996 100644
--- a/textproc/libxml2/PLIST
+++ b/textproc/libxml2/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.44 2013/05/26 09:22:14 adam Exp $
+@comment $NetBSD: PLIST,v 1.44.12.1 2014/11/03 19:39:07 tron Exp $
bin/xml2-config
bin/xmlcatalog
bin/xmllint
@@ -49,6 +49,7 @@ include/libxml2/libxml/xmlwriter.h
include/libxml2/libxml/xpath.h
include/libxml2/libxml/xpathInternals.h
include/libxml2/libxml/xpointer.h
+lib/cmake/libxml2/libxml2-config.cmake
lib/libxml2.la
lib/pkgconfig/libxml-2.0.pc
lib/xml2Conf.sh
diff --git a/textproc/libxml2/distinfo b/textproc/libxml2/distinfo
index 418c6eea7a3..61f8f350e01 100644
--- a/textproc/libxml2/distinfo
+++ b/textproc/libxml2/distinfo
@@ -1,8 +1,8 @@
-$NetBSD: distinfo,v 1.103 2014/05/10 22:45:42 spz Exp $
+$NetBSD: distinfo,v 1.103.4.1 2014/11/03 19:39:07 tron Exp $
-SHA1 (libxml2-2.9.1.tar.gz) = eb3e2146c6d68aea5c2a4422ed76fe196f933c21
-RMD160 (libxml2-2.9.1.tar.gz) = 257285d9ac070ed9f58666b7bd7c4653651c871b
-Size (libxml2-2.9.1.tar.gz) = 5172503 bytes
+SHA1 (libxml2-2.9.2.tar.gz) = f46a37ea6d869f702e03f393c376760f3cbee673
+RMD160 (libxml2-2.9.2.tar.gz) = 969b4ed8782f455fd4a6ca1c1b4ffa7651090070
+Size (libxml2-2.9.2.tar.gz) = 5444991 bytes
SHA1 (patch-aa) = 589a279df1a5fac8b1b2dbd0018a1bbf0c5ab169
SHA1 (patch-ab) = 11567fe9a3fde42f3901fd4ab4620bf845fe634b
SHA1 (patch-ac) = 101cd554fd22e8e9817e21591240eb784b1219b5
@@ -10,6 +10,5 @@ SHA1 (patch-ad) = cd45da492b02cce9983c46762839f68b8b1e0177
SHA1 (patch-ae) = 2823276343f65c7d244d22e548faa6a517445819
SHA1 (patch-ag) = 19afd69713298ecbd247ba733a7c0c13464ae572
SHA1 (patch-aj) = 988c30b4b09a1cbaf9e7db02bb8981da0f1beaa7
-SHA1 (patch-parser.c) = 06b448b1e627cbe5400524f5f980faa87b9ad4fe
+SHA1 (patch-ba) = 78097bb871cc614c8d95a53d825542d23e113192
SHA1 (patch-threads.c) = 70bb0a779dff6611f755128d609f82360a492f9a
-SHA1 (patch-xzlib.c) = 1fa0b97f3fb52c40c4df3933f269b9b0bbadb0ff
diff --git a/textproc/libxml2/patches/patch-ba b/textproc/libxml2/patches/patch-ba
new file mode 100644
index 00000000000..6fd1746e9b6
--- /dev/null
+++ b/textproc/libxml2/patches/patch-ba
@@ -0,0 +1,27 @@
+$NetBSD: patch-ba,v 1.3.2.2 2014/11/03 19:39:07 tron Exp $
+
+https://git.gnome.org/browse/libxml2/commit/?id=f65128f38289d77ff322d63aef2858cc0a819c34
+https://git.gnome.org/browse/libxml2/commit/?id=72a46a519ce7326d9a00f0b6a7f2a8e958cd1675
+
+--- parser.c.orig 2014-10-16 05:57:40.000000000 +0000
++++ parser.c
+@@ -7235,7 +7235,8 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
+ * far more secure as the parser will only process data coming from
+ * the document entity by default.
+ */
+- if ((ent->checked == 0) &&
++ if (((ent->checked == 0) ||
++ ((ent->children == NULL) && (ctxt->options & XML_PARSE_NOENT))) &&
+ ((ent->etype != XML_EXTERNAL_GENERAL_PARSED_ENTITY) ||
+ (ctxt->options & (XML_PARSE_NOENT | XML_PARSE_DTDVALID)))) {
+ unsigned long oldnbent = ctxt->nbentities;
+@@ -14830,9 +14831,6 @@ xmlInitParser(void) {
+ #ifdef LIBXML_XPATH_ENABLED
+ xmlXPathInit();
+ #endif
+-#ifdef LIBXML_CATALOG_ENABLED
+- xmlInitializeCatalog();
+-#endif
+ xmlParserInitialized = 1;
+ #ifdef LIBXML_THREAD_ENABLED
+ }
diff --git a/textproc/libxml2/patches/patch-parser.c b/textproc/libxml2/patches/patch-parser.c
deleted file mode 100644
index 27171cb344f..00000000000
--- a/textproc/libxml2/patches/patch-parser.c
+++ /dev/null
@@ -1,28 +0,0 @@
-$NetBSD: patch-parser.c,v 1.1 2014/05/10 22:45:42 spz Exp $
-
-Do not fetch external parameter entities (CVE-2014-0191)
-https://git.gnome.org/browse/libxml2/commit/?id=9cd1c3cfbd32655d60572c0a413e017260c854df
-
---- parser.c.orig 2013-04-16 13:39:18.000000000 +0000
-+++ parser.c
-@@ -2595,6 +2595,20 @@ xmlParserHandlePEReference(xmlParserCtxt
- xmlCharEncoding enc;
-
- /*
-+ * Note: external parsed entities will not be loaded, it is
-+ * not required for a non-validating parser, unless the
-+ * option of validating, or substituting entities were
-+ * given. Doing so is far more secure as the parser will
-+ * only process data coming from the document entity by
-+ * default.
-+ */
-+ if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
-+ ((ctxt->options & XML_PARSE_NOENT) == 0) &&
-+ ((ctxt->options & XML_PARSE_DTDVALID) == 0) &&
-+ (ctxt->validate == 0))
-+ return;
-+
-+ /*
- * handle the extra spaces added before and after
- * c.f. http://www.w3.org/TR/REC-xml#as-PE
- * this is done independently.
diff --git a/textproc/libxml2/patches/patch-xzlib.c b/textproc/libxml2/patches/patch-xzlib.c
deleted file mode 100644
index 3fe047ec935..00000000000
--- a/textproc/libxml2/patches/patch-xzlib.c
+++ /dev/null
@@ -1,54 +0,0 @@
-$NetBSD: patch-xzlib.c,v 1.1 2013/11/25 23:30:23 wiz Exp $
-
-Fix bug in gzip decompression.
-https://bugzilla.gnome.org/show_bug.cgi?id=712528
-
---- xzlib.c.orig 2013-02-27 05:08:52.000000000 +0000
-+++ xzlib.c
-@@ -245,6 +245,20 @@ xz_avail(xz_statep state)
- return 0;
- }
-
-+#ifdef HAVE_ZLIB_H
-+static int
-+xz_avail_zstrm(xz_statep state)
-+{
-+ int ret;
-+ state->strm.avail_in = state->zstrm.avail_in;
-+ state->strm.next_in = state->zstrm.next_in;
-+ ret = xz_avail(state);
-+ state->zstrm.avail_in = (uInt) state->strm.avail_in;
-+ state->zstrm.next_in = (Bytef *) state->strm.next_in;
-+ return ret;
-+}
-+#endif
-+
- static int
- is_format_xz(xz_statep state)
- {
-@@ -314,6 +328,10 @@ is_format_lzma(xz_statep state)
- #define NEXT() ((strm->avail_in == 0 && xz_avail(state) == -1) ? -1 : \
- (strm->avail_in == 0 ? -1 : \
- (strm->avail_in--, *(strm->next_in)++)))
-+/* Same thing, but from zstrm */
-+#define NEXTZ() ((strm->avail_in == 0 && xz_avail_zstrm(state) == -1) ? -1 : \
-+ (strm->avail_in == 0 ? -1 : \
-+ (strm->avail_in--, *(strm->next_in)++)))
-
- /* Get a four-byte little-endian integer and return 0 on success and the value
- in *ret. Otherwise -1 is returned and *ret is not modified. */
-@@ -324,10 +342,10 @@ gz_next4(xz_statep state, unsigned long
- unsigned long val;
- z_streamp strm = &(state->zstrm);
-
-- val = NEXT();
-- val += (unsigned) NEXT() << 8;
-- val += (unsigned long) NEXT() << 16;
-- ch = NEXT();
-+ val = NEXTZ();
-+ val += (unsigned) NEXTZ() << 8;
-+ val += (unsigned long) NEXTZ() << 16;
-+ ch = NEXTZ();
- if (ch == -1)
- return -1;
- val += (unsigned long) ch << 24;
diff --git a/textproc/py-libxml2/Makefile b/textproc/py-libxml2/Makefile
index 398af118ff2..960435d4281 100644
--- a/textproc/py-libxml2/Makefile
+++ b/textproc/py-libxml2/Makefile
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.49 2014/03/13 11:08:52 jperkin Exp $
+# $NetBSD: Makefile,v 1.49.6.1 2014/11/03 19:39:08 tron Exp $
-DISTNAME= libxml2-2.9.1
+DISTNAME= libxml2-2.9.2
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
CATEGORIES= textproc python
MASTER_SITES= ftp://xmlsoft.org/libxml2/
diff --git a/textproc/py-libxml2/distinfo b/textproc/py-libxml2/distinfo
index a24d897ddfd..68cac4e7388 100644
--- a/textproc/py-libxml2/distinfo
+++ b/textproc/py-libxml2/distinfo
@@ -1,9 +1,8 @@
-$NetBSD: distinfo,v 1.30 2013/10/03 07:52:32 prlw1 Exp $
+$NetBSD: distinfo,v 1.30.8.1 2014/11/03 19:39:08 tron Exp $
-SHA1 (libxml2-2.9.1.tar.gz) = eb3e2146c6d68aea5c2a4422ed76fe196f933c21
-RMD160 (libxml2-2.9.1.tar.gz) = 257285d9ac070ed9f58666b7bd7c4653651c871b
-Size (libxml2-2.9.1.tar.gz) = 5172503 bytes
+SHA1 (libxml2-2.9.2.tar.gz) = f46a37ea6d869f702e03f393c376760f3cbee673
+RMD160 (libxml2-2.9.2.tar.gz) = 969b4ed8782f455fd4a6ca1c1b4ffa7651090070
+Size (libxml2-2.9.2.tar.gz) = 5444991 bytes
SHA1 (patch-aa) = 54ce6f91dd29144f22247d15093d6d273f5f433b
-SHA1 (patch-ab) = 793db9f20df8bba2fbee61abf4239a879c182aa7
-SHA1 (patch-ac) = b2e8fac8221ae9fb00b3de33441dd83cd7422204
-SHA1 (patch-drv_libxml2.py) = 95b8b71bb619c25f092019a0f950b4416cd80738
+SHA1 (patch-ab) = fcf0c129f6c6a563806882271d16f57c1bc61d54
+SHA1 (patch-ac) = 4d14006810239491ecda6967dee2087eb382ba08
diff --git a/textproc/py-libxml2/patches/patch-ab b/textproc/py-libxml2/patches/patch-ab
index ef8f655b0b8..4b81d00a231 100644
--- a/textproc/py-libxml2/patches/patch-ab
+++ b/textproc/py-libxml2/patches/patch-ab
@@ -1,37 +1,11 @@
-$NetBSD: patch-ab,v 1.2 2013/10/03 07:52:32 prlw1 Exp $
+$NetBSD: patch-ab,v 1.2.8.1 2014/11/03 19:39:08 tron Exp $
- Fix build under Mac OS X (reorder os.path.join(ROOT,'include') )
-- White space changes for python 3 indentation (commit 4b61cf61)
---- setup.py.orig 2013-10-02 21:20:43.000000000 +0000
+--- setup.py.orig 2014-10-16 07:35:21.000000000 +0000
+++ setup.py
-@@ -6,14 +6,14 @@ import sys, os
- from distutils.core import setup, Extension
-
- # Below ROOT, we expect to find include, include/libxml2, lib and bin.
--# On *nix, it is not needed (but should not harm),
-+# On *nix, it is not needed (but should not harm),
- # on Windows, it is set by configure.js.
--ROOT = r'/usr'
-+ROOT = r'/usr'
-
- # Thread-enabled libxml2
- with_threads = 1
-
--# If this flag is set (windows only),
-+# If this flag is set (windows only),
- # a private copy of the dlls are included in the package.
- # If this flag is not set, the libxml2 and libxslt
- # dlls must be found somewhere in the PATH at runtime.
-@@ -51,15 +51,15 @@ else:
- libraryPrefix = ''
- platformLibs = ["m","z"]
-
--# those are examined to find
-+# those are examined to find
- # - libxml2/libxml/tree.h
--# - iconv.h
-+# - iconv.h
+@@ -56,10 +56,10 @@ else:
+ # - iconv.h
# - libxslt/xsltconfig.h
includes_dir = [
+os.path.join(ROOT,'include'),
@@ -42,149 +16,3 @@ $NetBSD: patch-ab,v 1.2 2013/10/03 07:52:32 prlw1 Exp $
HOME
];
-@@ -67,7 +67,7 @@ xml_includes=""
- for dir in includes_dir:
- if not missing(dir + "/libxml2/libxml/tree.h"):
- xml_includes=dir + "/libxml2"
-- break;
-+ break;
-
- if xml_includes == "":
- print("failed to find headers for libxml2: update includes_dir")
-@@ -77,7 +77,7 @@ iconv_includes=""
- for dir in includes_dir:
- if not missing(dir + "/iconv.h"):
- iconv_includes=dir
-- break;
-+ break;
-
- if iconv_includes == "":
- print("failed to find headers for libiconv: update includes_dir")
-@@ -90,22 +90,22 @@ os.path.join(ROOT,'lib'),
-
- xml_files = ["libxml2-api.xml", "libxml2-python-api.xml",
- "libxml.c", "libxml.py", "libxml_wrap.h", "types.c",
-- "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
-+ "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
-
- xslt_files = ["libxslt-api.xml", "libxslt-python-api.xml",
- "libxslt.c", "libxsl.py", "libxslt_wrap.h",
-- "xsltgenerator.py"]
-+ "xsltgenerator.py"]
-
- if missing("libxml2-py.c") or missing("libxml2.py"):
- try:
-- try:
-- import xmlgenerator
-- except:
-- import generator
-+ try:
-+ import xmlgenerator
-+ except:
-+ import generator
- except:
-- print("failed to find and generate stubs for libxml2, aborting ...")
-- print(sys.exc_info()[0], sys.exc_info()[1])
-- sys.exit(1)
-+ print("failed to find and generate stubs for libxml2, aborting ...")
-+ print(sys.exc_info()[0], sys.exc_info()[1])
-+ sys.exit(1)
-
- head = open("libxml.py", "r")
- generated = open("libxml2class.py", "r")
-@@ -116,7 +116,7 @@ if missing("libxml2-py.c") or missing("l
- else:
- result.write(line)
- for line in generated.readlines():
-- result.write(line)
-+ result.write(line)
- head.close()
- generated.close()
- result.close()
-@@ -126,39 +126,39 @@ if missing("libxslt-py.c") or missing("l
- if missing("xsltgenerator.py") or missing("libxslt-api.xml"):
- print("libxslt stub generator not found, libxslt not built")
- else:
-- try:
-- import xsltgenerator
-- except:
-- print("failed to generate stubs for libxslt, aborting ...")
-- print(sys.exc_info()[0], sys.exc_info()[1])
-- else:
-- head = open("libxsl.py", "r")
-- generated = open("libxsltclass.py", "r")
-- result = open("libxslt.py", "w")
-- for line in head.readlines():
-+ try:
-+ import xsltgenerator
-+ except:
-+ print("failed to generate stubs for libxslt, aborting ...")
-+ print(sys.exc_info()[0], sys.exc_info()[1])
-+ else:
-+ head = open("libxsl.py", "r")
-+ generated = open("libxsltclass.py", "r")
-+ result = open("libxslt.py", "w")
-+ for line in head.readlines():
- if WITHDLLS:
- result.write(altImport(line))
- else:
- result.write(line)
-- for line in generated.readlines():
-- result.write(line)
-- head.close()
-- generated.close()
-- result.close()
-- with_xslt=1
-+ for line in generated.readlines():
-+ result.write(line)
-+ head.close()
-+ generated.close()
-+ result.close()
-+ with_xslt=1
- else:
- with_xslt=1
-
- if with_xslt == 1:
- xslt_includes=""
- for dir in includes_dir:
-- if not missing(dir + "/libxslt/xsltconfig.h"):
-- xslt_includes=dir + "/libxslt"
-- break;
-+ if not missing(dir + "/libxslt/xsltconfig.h"):
-+ xslt_includes=dir + "/libxslt"
-+ break;
-
- if xslt_includes == "":
-- print("failed to find headers for libxslt: update includes_dir")
-- with_xslt = 0
-+ print("failed to find headers for libxslt: update includes_dir")
-+ with_xslt = 0
-
-
- descr = "libxml2 package"
-@@ -194,11 +194,11 @@ if with_xslt == 1:
-
-
- extens=[Extension('libxml2mod', c_files, include_dirs=includes,
-- library_dirs=libdirs,
-- libraries=libs, define_macros=macros)]
-+ library_dirs=libdirs,
-+ libraries=libs, define_macros=macros)]
- if with_xslt == 1:
- extens.append(Extension('libxsltmod', xslt_c_files, include_dirs=includes,
-- library_dirs=libdirs,
-+ library_dirs=libdirs,
- libraries=libs, define_macros=macros))
-
- if missing("MANIFEST"):
-@@ -208,8 +208,8 @@ if missing("MANIFEST"):
- for file in xml_files:
- manifest.write(file + "\n")
- if with_xslt == 1:
-- for file in xslt_files:
-- manifest.write(file + "\n")
-+ for file in xslt_files:
-+ manifest.write(file + "\n")
- manifest.close()
-
- if WITHDLLS:
diff --git a/textproc/py-libxml2/patches/patch-ac b/textproc/py-libxml2/patches/patch-ac
index e0f0ccd9b0d..845f164f3a7 100644
--- a/textproc/py-libxml2/patches/patch-ac
+++ b/textproc/py-libxml2/patches/patch-ac
@@ -1,8 +1,8 @@
-$NetBSD: patch-ac,v 1.1 2013/05/28 22:26:13 drochner Exp $
+$NetBSD: patch-ac,v 1.1.12.1 2014/11/03 19:39:08 tron Exp $
fix for Python-2.6
---- libxml_wrap.h.orig 2013-04-02 02:25:28.000000000 +0000
+--- libxml_wrap.h.orig 2014-10-03 09:00:54.000000000 +0000
+++ libxml_wrap.h
@@ -28,7 +28,6 @@
* and don't use Capsule but CObjects
@@ -13,8 +13,8 @@ fix for Python-2.6
#define PyBytes_Size PyString_Size
#define PyBytes_AsString PyString_AsString
@@ -40,7 +39,6 @@
+ #define PyCapsule_CheckExact PyCObject_Check
#define PyCapsule_GetPointer(o, n) PyCObject_GetDesc((o))
-
#endif
-#endif
diff --git a/textproc/py-libxml2/patches/patch-drv_libxml2.py b/textproc/py-libxml2/patches/patch-drv_libxml2.py
deleted file mode 100644
index 700ae4eac23..00000000000
--- a/textproc/py-libxml2/patches/patch-drv_libxml2.py
+++ /dev/null
@@ -1,40 +0,0 @@
-$NetBSD: patch-drv_libxml2.py,v 1.1 2013/10/03 07:52:32 prlw1 Exp $
-
-Python 3 fix
-commit 6c9c611b
-
---- drv_libxml2.py.orig 2009-07-30 15:24:34.000000000 +0000
-+++ drv_libxml2.py
-@@ -34,12 +34,20 @@ TODO
-
- """
-
--__author__ = u"Stéphane Bidoul <sbi@skynet.be>"
-+__author__ = "Stéphane Bidoul <sbi@skynet.be>"
- __version__ = "0.3"
-
-+import sys
- import codecs
--from types import StringType, UnicodeType
--StringTypes = (StringType,UnicodeType)
-+
-+if sys.version < "3":
-+ __author__ = codecs.unicode_escape_decode(__author__)[0]
-+
-+ from types import StringType, UnicodeType
-+ StringTypes = (StringType,UnicodeType)
-+
-+else:
-+ StringTypes = (str)
-
- from xml.sax._exceptions import *
- from xml.sax import xmlreader, saxutils
-@@ -65,7 +73,7 @@ def _d(s):
-
- try:
- import libxml2
--except ImportError, e:
-+except ImportError as e:
- raise SAXReaderNotAvailable("libxml2 not available: " \
- "import error was: %s" % e)
-