diff --git a/.gitignore b/.gitignore index 9dd191a..58aac05 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,3 @@ /xmlrpc-c-1.49.02.tar.xz /xmlrpc-c-1.51.0.tar.xz /xmlrpc-1.51.08.tgz -/xmlrpc-c-1.59.02.tgz -/xmlrpc-c-1.59.03.tgz -/xmlrpc-c-1.60.04.tgz diff --git a/0001-xmlrpc_server_abyss-use-va_args-properly.patch b/0001-xmlrpc_server_abyss-use-va_args-properly.patch new file mode 100644 index 0000000..f519d95 --- /dev/null +++ b/0001-xmlrpc_server_abyss-use-va_args-properly.patch @@ -0,0 +1,34 @@ +From d31c2ffbf5181053330fa32e4f03c47283bd1448 Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Sat, 17 Dec 2016 10:28:31 +0100 +Subject: [PATCH 1/3] xmlrpc_server_abyss: use va_args properly +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +../src/xmlrpc_server_abyss.c: In function ‘createServer’: +../src/xmlrpc_server_abyss.c:783:13: error: format not a string literal and no format arguments [-Werror=format-security] + xmlrpc_faultf(envP, error); + ^~~~~~~~~~~~~ + +Signed-off-by: Igor Gnatenko +--- + src/xmlrpc_server_abyss.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/xmlrpc_server_abyss.c b/src/xmlrpc_server_abyss.c +index 8aacb4b..58f5ba0 100644 +--- a/src/xmlrpc_server_abyss.c ++++ b/src/xmlrpc_server_abyss.c +@@ -780,7 +780,7 @@ createServer(xmlrpc_env * const envP, + ServerInit2(abyssServerP, &error); + + if (error) { +- xmlrpc_faultf(envP, error); ++ xmlrpc_faultf(envP, "%s", error); + xmlrpc_strfree(error); + } + } +-- +2.13.1 + diff --git a/0003-allow-30x-redirections.patch b/0003-allow-30x-redirections.patch index 2fef64d..7446fa6 100644 --- a/0003-allow-30x-redirections.patch +++ b/0003-allow-30x-redirections.patch @@ -12,7 +12,6 @@ index f0aafae..b5392a9 100644 --- a/lib/curl_transport/curltransaction.c +++ b/lib/curl_transport/curltransaction.c @@ -671,6 +671,10 @@ setupCurlSession(xmlrpc_env * const envP, - curl_easy_setopt(curlSessionP, CURLOPT_POST, 1); curl_easy_setopt(curlSessionP, CURLOPT_URL, transP->serverUrl); diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9e6c752 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +MAKEFILE_COMMON = $(HOME)/.fedora/common.mk +-include $(MAKEFILE_COMMON) + +all: + +SVN_VER ?= ${VERSION} + +svn-sources: + cd $(DESTDIR) . && svn export https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced@${SVN_REV} xmlrpc-c-${SVN_VER} + cd $(DESTDIR) . && tar cJf xmlrpc-c-${SVN_VER}.tar.xz xmlrpc-c-${SVN_VER} --owner root --group root --mode=go-w,a+rX diff --git a/sources b/sources index 0b86711..c3151c1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xmlrpc-c-1.60.04.tgz) = 68407053eec1e3f32187169f5bb976e9f043f1576dd9fb7a9076ed00414dd0293cfdf72527a314c244dd48986402af3c9cc33d110ed3b382a13190eb8dddb734 +SHA512 (xmlrpc-1.51.08.tgz) = df0d8e3730b529fb10fb2cf9511dc55143ad3c7b4cce5522b61ed0d212080f3ebf4b6aa8a28911ddbe90029fce6bea7df28ee51f36196900a855beff5bd3a1cd diff --git a/xmlrpc-c-check-vasprintf-return-value.patch b/xmlrpc-c-check-vasprintf-return-value.patch new file mode 100644 index 0000000..cfc7f45 --- /dev/null +++ b/xmlrpc-c-check-vasprintf-return-value.patch @@ -0,0 +1,41 @@ +From 80047d74644eeda55c451aea59951eb502649cf4 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz +Date: Thu, 29 Jul 2010 19:43:08 +0200 +Subject: [PATCH 7/8] check vasprintf return value + +--- + lib/libutil/asprintf.c | 3 ++- + lib/util/casprintf.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/lib/libutil/asprintf.c b/lib/libutil/asprintf.c +index a79cd81..5a06f0f 100644 +--- a/lib/libutil/asprintf.c ++++ b/lib/libutil/asprintf.c +@@ -121,7 +121,8 @@ xmlrpc_vasprintf(const char ** const retvalP, + char * string; + + #if HAVE_ASPRINTF +- vasprintf(&string, fmt, varargs); ++ if (vasprintf(&string, fmt, varargs) < 0) ++ string = NULL; + #else + simpleVasprintf(&string, fmt, varargs); + #endif +diff --git a/lib/util/casprintf.c b/lib/util/casprintf.c +index 643f145..9139253 100644 +--- a/lib/util/casprintf.c ++++ b/lib/util/casprintf.c +@@ -99,7 +99,8 @@ cvasprintf(const char ** const retvalP, + char * string; + + #if HAVE_ASPRINTF +- vasprintf(&string, fmt, varargs); ++ if (vasprintf(&string, fmt, varargs) < 0) ++ string = NULL; + #else + simpleVasprintf(&string, fmt, varargs); + #endif +-- +1.7.3.4 + diff --git a/xmlrpc-c-printf-size_t.patch b/xmlrpc-c-printf-size_t.patch new file mode 100644 index 0000000..420b213 --- /dev/null +++ b/xmlrpc-c-printf-size_t.patch @@ -0,0 +1,48 @@ +From 25a777bb0ee2e2ee17d87006f76b3cea5d15a9f7 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz +Date: Mon, 25 Feb 2008 17:48:25 +0100 +Subject: [PATCH 2/9] fixed broken format string modifiers + +--- + examples/json.c | 4 ++-- + examples/parse_xml.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/examples/json.c b/examples/json.c +index 89fe82b..91ea50d 100644 +--- a/examples/json.c ++++ b/examples/json.c +@@ -41,7 +41,7 @@ printAsXml(xmlrpc_value * const valP) { + printf("XML-RPC XML:\n"); + + printf("%.*s\n", +- XMLRPC_MEMBLOCK_SIZE(char, &out), ++ (int)XMLRPC_MEMBLOCK_SIZE(char, &out), + XMLRPC_MEMBLOCK_CONTENTS(char, &out)); + + XMLRPC_MEMBLOCK_CLEAN(char, &out); +@@ -70,7 +70,7 @@ printAsJson(xmlrpc_value * const valP) { + printf("JSON:\n"); + + printf("%.*s\n", +- XMLRPC_MEMBLOCK_SIZE(char, &out), ++ (int)XMLRPC_MEMBLOCK_SIZE(char, &out), + XMLRPC_MEMBLOCK_CONTENTS(char, &out)); + + XMLRPC_MEMBLOCK_CLEAN(char, &out); +diff --git a/examples/parse_xml.c b/examples/parse_xml.c +index 2e6c508..4f6c308 100644 +--- a/examples/parse_xml.c ++++ b/examples/parse_xml.c +@@ -58,7 +58,7 @@ describeXmlElement(const xml_element * const elemP, + printf("%sXML element type: '%s'\n", + prefix, xml_element_name(elemP)); + +- printf("%sNumber of child elements: %u\n", ++ printf("%sNumber of child elements: %zu\n", + prefix, xml_element_children_size(elemP)); + + for (i = 0; i < xml_element_children_size(elemP); ++i) { +-- +1.7.6 + diff --git a/xmlrpc-c.spec b/xmlrpc-c.spec index 9184ace..419f687 100644 --- a/xmlrpc-c.spec +++ b/xmlrpc-c.spec @@ -1,25 +1,36 @@ -# build order matters and multiple threads break it -%global _smp_mflags -j1 +# Upstream libxml2 backend is completely broken since 2015 +# https://sourceforge.net/p/xmlrpc-c/patches/49/ +%bcond_with libxml2 Name: xmlrpc-c -Version: 1.60.04 -Release: 7%{?dist} +Version: 1.51.08 +Release: 1%{?dist} Summary: Lightweight RPC library based on XML and HTTP # See doc/COPYING for details. # The Python 1.5.2 license used by a few files is just BSD. -# Automatically converted from old format: BSD and MIT - review is highly recommended. -License: LicenseRef-Callaway-BSD AND LicenseRef-Callaway-MIT +License: BSD and MIT URL: http://xmlrpc-c.sourceforge.net/ -Source: http://dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-c-%version.tgz +Source: http://dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-%version.tgz +# generated by 'make svn-sources [SVN_VER=%%version SVN_REV=%%svnrev]'. Unfortunately, +# upstream does not tag versions so we must fetch from the branch and +# check which version was used for it +#%%{?advanced_branch:Source0: xmlrpc-c-%%version.tar.xz} # Upstreamable patches +Patch101: 0001-xmlrpc_server_abyss-use-va_args-properly.patch Patch102: 0002-Use-proper-datatypes-for-long-long.patch Patch103: 0003-allow-30x-redirections.patch BuildRequires: git-core +BuildRequires: meson >= 0.36.0 BuildRequires: gcc BuildRequires: gcc-c++ +%if %{with libxml2} BuildRequires: pkgconfig(libxml-2.0) +%else +# upstream has its own fork of expat +Provides: bundled(expat) +%endif BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(libcurl) BuildRequires: readline-devel @@ -101,13 +112,14 @@ This package contains some handy XML-RPC demo applications. %prep -%autosetup -Sgit +%autosetup -Sgit -n xmlrpc-%{version} %build %configure -%make_build CFLAGS="%{optflags} -std=gnu17" -%make_build CFLAGS="%{optflags} -std=gnu17" -C tools +%make_build +# build order matters and multiple threads break it +%make_build -j1 -C tools %install @@ -122,9 +134,10 @@ This package contains some handy XML-RPC demo applications. %files %license doc/COPYING lib/abyss/license.txt %doc doc/CREDITS doc/HISTORY +%if ! %{with libxml2} %{_libdir}/libxmlrpc_xml*.so.* +%endif %{_libdir}/libxmlrpc.so.* -%{_libdir}/libxmlrpc_openssl.so.* %{_libdir}/libxmlrpc_util.so.* %{_libdir}/libxmlrpc_abyss.so.* %{_libdir}/libxmlrpc_server.so.* @@ -171,55 +184,6 @@ This package contains some handy XML-RPC demo applications. %{_bindir}/xmlrpc_dumpserver %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 1.60.04-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jun 13 2026 Yaakov Selkowitz - 1.60.04-6 -- Rebuilt for openssl 4.0 - -* Sat Jan 17 2026 Fedora Release Engineering - 1.60.04-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 1.60.04-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Thu Jan 23 2025 Jonathan Wright - 1.60.04-3 -- fix ftbfs on gcc15 rhbz#2341577 - -* Sun Jan 19 2025 Fedora Release Engineering - 1.60.04-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Thu Jan 02 2025 Jonathan Wright - 1.60.4-2 -- Use global macro to override make smp_flags - -* Thu Jan 02 2025 Jonathan Wright - 1.60.4-1 -- update to 1.60.4 rhbz#2334236 -- re-enable builds against libxml2, no more bundled libexpat -- fixes rhbz#2310136 -- fixes rhbz#2310146 -- fixes rhbz#2310152 - -* Wed Sep 04 2024 Miroslav Suchý - 1.59.03-3 -- convert license to SPDX - -* Sat Jul 20 2024 Fedora Release Engineering - 1.59.03-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Tue Mar 26 2024 Jonathan Wright - 1.59.03-1 -- update to 1.59.03 rhbz#2271506 - -* Sat Jan 27 2024 Fedora Release Engineering - 1.59.02-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Jan 03 2024 Jonathan Wright - 1.59.02-1 -- Update to 1.59.02 rhbz#1694044 - -* Sat Jul 22 2023 Fedora Release Engineering - 1.51.08-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 1.51.08-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - * Tue Dec 06 2022 Jonathan Wright - 1.51.08-1 - update to 1.51.08 - Remove meson build code, follow upstream build methods