diff options
author | Sam James <sam@gentoo.org> | 2022-02-26 19:06:59 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2022-02-26 19:06:59 +0000 |
commit | 8b880213b94234eba5e216a0742e37941d7446cc (patch) | |
tree | eb2d0d4d822486727bf47617765b26478934dca7 /dev-libs/libwbxml | |
parent | dev-ruby/benchmark-ips: keyword 2.9.2 for hppa, bug #833783 (diff) | |
download | gentoo-8b880213b94234eba5e216a0742e37941d7446cc.tar.gz gentoo-8b880213b94234eba5e216a0742e37941d7446cc.tar.bz2 gentoo-8b880213b94234eba5e216a0742e37941d7446cc.zip |
dev-libs/libwbxml: fix compatibility with newer expat
Bug: https://bugs.gentoo.org/833431
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-libs/libwbxml')
-rw-r--r-- | dev-libs/libwbxml/files/libwbxml-0.11.7-expat-compat-fixes.patch | 116 | ||||
-rw-r--r-- | dev-libs/libwbxml/libwbxml-0.11.7-r1.ebuild | 37 |
2 files changed, 153 insertions, 0 deletions
diff --git a/dev-libs/libwbxml/files/libwbxml-0.11.7-expat-compat-fixes.patch b/dev-libs/libwbxml/files/libwbxml-0.11.7-expat-compat-fixes.patch new file mode 100644 index 000000000000..00479c7f6437 --- /dev/null +++ b/dev-libs/libwbxml/files/libwbxml-0.11.7-expat-compat-fixes.patch @@ -0,0 +1,116 @@ +https://github.com/libwbxml/libwbxml/commit/4664d476fb5029073012b91880ce2a9bbc0b4725 +https://github.com/libwbxml/libwbxml/commit/4425e80f74b93a590b2c99638b9c5095e6a66244 + +From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= <slavek.banko@axis.cz> +Date: Thu, 24 Feb 2022 20:30:18 +0100 +Subject: [PATCH] Allow the use of a namespace separator specified by the + constant instead of hardcoded colon in the SyncML related code. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Slávek Banko <slavek.banko@axis.cz> +--- a/src/wbxml_internals.h ++++ b/src/wbxml_internals.h +@@ -156,7 +156,9 @@ typedef enum WBXMLWVDataType_e { + #pragma warning(error: 4761) /**< integral size mismatch in argument : conversion supplied */ + #endif /* WIN32 */ + +-#define WBXML_NAMESPACE_SEPARATOR ':' ++/* Separator must be the same in both cases - once as a char, once as a string */ ++#define WBXML_NAMESPACE_SEPARATOR ':' ++#define WBXML_NAMESPACE_SEPARATOR_STR ":" + + /** @} */ + +--- a/src/wbxml_tree_clb_xml.c ++++ b/src/wbxml_tree_clb_xml.c +@@ -33,6 +33,7 @@ + * @brief WBXML Tree Callbacks for XML Parser (Expat) + */ + ++#include "wbxml_internals.h" + #include "wbxml_config_internals.h" + + #if defined( HAVE_EXPAT ) +@@ -160,8 +161,8 @@ void wbxml_tree_clb_xml_start_element(void *ctx, + * potentially embedded documents. + */ + if (( +- (WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0) || +- (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0) ++ (WBXML_STRCMP(localName, "syncml:devinf" WBXML_NAMESPACE_SEPARATOR_STR "DevInf") == 0) || ++ (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0) + )&& + (tree_ctx->current != NULL)) + { +@@ -255,8 +256,8 @@ void wbxml_tree_clb_xml_end_element(void *ctx, + /* End of skipped node */ + + #if defined( WBXML_SUPPORT_SYNCML ) +- if (WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0 || +- WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0) { ++ if (WBXML_STRCMP(localName, "syncml:devinf" WBXML_NAMESPACE_SEPARATOR_STR "DevInf") == 0 || ++ WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0) { + /* definitions first ... or some compilers don't like it */ + WBXMLBuffer *embed_doc = NULL; + WBXMLTree *tree = NULL; +@@ -277,10 +278,10 @@ void wbxml_tree_clb_xml_end_element(void *ctx, + } + + /* Check Buffer Creation and add the closing tag */ +- if ((WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0 && ++ if ((WBXML_STRCMP(localName, "syncml:devinf" WBXML_NAMESPACE_SEPARATOR_STR "DevInf") == 0 && + (!wbxml_buffer_append_cstr(embed_doc, "</DevInf>"))) + || +- (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0 && ++ (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0 && + (!wbxml_buffer_append_cstr(embed_doc, "</MgmtTree>")))) + { + tree_ctx->error = WBXML_ERROR_NOT_ENOUGH_MEMORY; +@@ -289,7 +290,7 @@ void wbxml_tree_clb_xml_end_element(void *ctx, + } + + /* Add doctype to give the XML parser a chance */ +- if (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0 && ++ if (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0 && + tree_ctx->tree->lang->langID != WBXML_LANG_SYNCML_SYNCML12) + { + tree_ctx->error = WBXML_ERROR_UNKNOWN_XML_LANGUAGE; +@@ -305,7 +306,7 @@ void wbxml_tree_clb_xml_end_element(void *ctx, + lang = wbxml_tables_get_table(WBXML_LANG_SYNCML_DEVINF11); + break; + case WBXML_LANG_SYNCML_SYNCML12: +- if (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0) { ++ if (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0) { + lang = wbxml_tables_get_table(WBXML_LANG_SYNCML_DMDDF12); + } else { + lang = wbxml_tables_get_table(WBXML_LANG_SYNCML_DEVINF12); + +From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= <slavek.banko@axis.cz> +Date: Thu, 24 Feb 2022 20:31:15 +0100 +Subject: [PATCH] Change the default internal namespace separator from the + colon to the pipe. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This solves compatibility with libexpat >= 2.4.5 +after fix the security problem CVE-2022-25236. + +This resolves issue #76. + +Signed-off-by: Slávek Banko <slavek.banko@axis.cz> +--- a/src/wbxml_internals.h ++++ b/src/wbxml_internals.h +@@ -157,8 +157,8 @@ typedef enum WBXMLWVDataType_e { + #endif /* WIN32 */ + + /* Separator must be the same in both cases - once as a char, once as a string */ +-#define WBXML_NAMESPACE_SEPARATOR ':' +-#define WBXML_NAMESPACE_SEPARATOR_STR ":" ++#define WBXML_NAMESPACE_SEPARATOR '|' ++#define WBXML_NAMESPACE_SEPARATOR_STR "|" + + /** @} */ + diff --git a/dev-libs/libwbxml/libwbxml-0.11.7-r1.ebuild b/dev-libs/libwbxml/libwbxml-0.11.7-r1.ebuild new file mode 100644 index 000000000000..d351e183714d --- /dev/null +++ b/dev-libs/libwbxml/libwbxml-0.11.7-r1.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit cmake + +DESCRIPTION="Library and tools to parse, encode and handle WBXML documents" +HOMEPAGE="https://github.com/libwbxml/libwbxml" +SRC_URI="https://github.com/${PN}/${PN}/archive/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND="dev-libs/expat + virtual/libiconv" +DEPEND="${RDEPEND} + test? ( dev-libs/check )" + +DOCS=( BUGS ChangeLog README References THANKS TODO ) +S=${WORKDIR}/${PN}-${P} + +PATCHES=( + "${FILESDIR}"/${P}-expat-compat-fixes.patch +) + +src_configure() { + local mycmakeargs=( + -DENABLE_INSTALL_DOC=OFF + -DENABLE_UNIT_TEST=$(usex test) + ) + + cmake_src_configure +} |