From 087dba3d827b2cf071531cf88c9a5a9461d13f83 Mon Sep 17 00:00:00 2001 From: yixiangzhike Date: Fri, 10 Mar 2023 16:50:14 +0800 Subject: [PATCH] Fix failure of compiling with curl-7.88.1 --- ...od-Fix-usage-of-deprecated-CURLINFO_.patch | 48 +++++++++++++++++++ ...e-CURL_AT_LEAST_VERSION-if-necessary.patch | 35 ++++++++++++++ ...t-Use-CURLOPT_PROTOCOLS_STR-for-libc.patch | 34 +++++++++++++ elfutils.spec | 14 +++++- 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 backport-PR29926-debuginfod-Fix-usage-of-deprecated-CURLINFO_.patch create mode 100644 backport-debuginfod-Define-CURL_AT_LEAST_VERSION-if-necessary.patch create mode 100644 backport-debuginfod-client-Use-CURLOPT_PROTOCOLS_STR-for-libc.patch diff --git a/backport-PR29926-debuginfod-Fix-usage-of-deprecated-CURLINFO_.patch b/backport-PR29926-debuginfod-Fix-usage-of-deprecated-CURLINFO_.patch new file mode 100644 index 0000000..49d86b2 --- /dev/null +++ b/backport-PR29926-debuginfod-Fix-usage-of-deprecated-CURLINFO_.patch @@ -0,0 +1,48 @@ +From d2bf497b12fbd49b4996ccf0744303ffd67735b1 Mon Sep 17 00:00:00 2001 +From: Andrew Paprocki +Date: Wed, 21 Dec 2022 11:15:00 -0500 +Subject: [PATCH] PR29926: debuginfod: Fix usage of deprecated CURLINFO_* + +The `CURLINFO_SIZE_DOWNLOAD_T` and `CURLINFO_CONTENT_LENGTH_DOWNLOAD_T` +identifiers are `enum`s, not pre-processor definitions, so the current +`#ifdef` logic is not selecting the newer API. This results in the +older identifiers being used and they now generate errors when compiled +against Curl 7.87, which has silently deprecated them, causing GCC to +emit `-Werror=deprecated-declarations`. + +Instead, the newer identifiers were added in Curl 7.55, so explicitly +check for `CURL_AT_LEAST_VERSION(7, 55, 0)` instead of the current +logic. This eliminates the error when compiling against Curl 7.87. + +Ref: https://github.com/curl/curl/pull/1511 + +Signed-off-by: Andrew Paprocki +--- + debuginfod/debuginfod-client.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index 8873fcc8..692aecce 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -1456,7 +1456,7 @@ debuginfod_query_server (debuginfod_client *c, + deflate-compressing proxies, this number is likely to be + unavailable, so -1 may show. */ + CURLcode curl_res; +-#ifdef CURLINFO_CONTENT_LENGTH_DOWNLOAD_T ++#if CURL_AT_LEAST_VERSION(7, 55, 0) + curl_off_t cl; + curl_res = curl_easy_getinfo(target_handle, + CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, +@@ -1491,7 +1491,7 @@ debuginfod_query_server (debuginfod_client *c, + if (target_handle) /* we've committed to a server; report its download progress */ + { + CURLcode curl_res; +-#ifdef CURLINFO_SIZE_DOWNLOAD_T ++#if CURL_AT_LEAST_VERSION(7, 55, 0) + curl_off_t dl; + curl_res = curl_easy_getinfo(target_handle, + CURLINFO_SIZE_DOWNLOAD_T, +-- +2.27.0 + diff --git a/backport-debuginfod-Define-CURL_AT_LEAST_VERSION-if-necessary.patch b/backport-debuginfod-Define-CURL_AT_LEAST_VERSION-if-necessary.patch new file mode 100644 index 0000000..dcae360 --- /dev/null +++ b/backport-debuginfod-Define-CURL_AT_LEAST_VERSION-if-necessary.patch @@ -0,0 +1,35 @@ +From 304741e11018c29e7ff17751e05dcc5c786a3fd9 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 21 Dec 2022 18:21:08 +0100 +Subject: [PATCH] debuginfod: Define CURL_AT_LEAST_VERSION if necessary + +Older curl.h don't define CURL_AT_LEAST_VERSION, so define it +ourselves because it is nicer than doing hex encoded version +comparisons. + +Signed-off-by: Mark Wielaard +--- + debuginfod/debuginfod-client.c | 7 +++++++ + 1 files changed, 7 insertions(+) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index 692aecce..a16165bd 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -105,6 +105,13 @@ void debuginfod_end (debuginfod_client *c) { } + #include + #endif + ++/* Older curl.h don't define CURL_AT_LEAST_VERSION. */ ++#ifndef CURL_AT_LEAST_VERSION ++ #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) ++ #define CURL_AT_LEAST_VERSION(x,y,z) \ ++ (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) ++#endif ++ + #include + + static pthread_once_t init_control = PTHREAD_ONCE_INIT; +-- +2.27.0 + diff --git a/backport-debuginfod-client-Use-CURLOPT_PROTOCOLS_STR-for-libc.patch b/backport-debuginfod-client-Use-CURLOPT_PROTOCOLS_STR-for-libc.patch new file mode 100644 index 0000000..4939cbe --- /dev/null +++ b/backport-debuginfod-client-Use-CURLOPT_PROTOCOLS_STR-for-libc.patch @@ -0,0 +1,34 @@ +From 6560fb26a62ef135a804357ef4f15a47de3e49b3 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Tue, 10 Jan 2023 23:20:41 +0100 +Subject: [PATCH] debuginfod-client: Use CURLOPT_PROTOCOLS_STR for libcurl >= + 7.85.0 + +https://sourceware.org/bugzilla/show_bug.cgi?id=29926 + +Signed-off-by: Mark Wielaard +--- + debuginfod/debuginfod-client.c | 5 +++++ + 1 files changed, 5 insertions(+) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index 5ebddbd..4326b59 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -1024,8 +1024,13 @@ debuginfod_query_server (debuginfod_client *c, + + /* Only allow http:// + https:// + file:// so we aren't being + redirected to some unsupported protocol. */ ++#if CURL_AT_LEAST_VERSION(7, 85, 0) ++ curl_easy_setopt(data[i].handle, CURLOPT_PROTOCOLS_STR, ++ "http,https,file"); ++#else + curl_easy_setopt(data[i].handle, CURLOPT_PROTOCOLS, + CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FILE); ++#endif + curl_easy_setopt(data[i].handle, CURLOPT_URL, data[i].url); + if (vfd >= 0) + curl_easy_setopt(data[i].handle, CURLOPT_ERRORBUFFER, data[i].errbuf); +-- +2.27.0 + diff --git a/elfutils.spec b/elfutils.spec index 0cb416e..cb7445f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,7 +1,7 @@ # -*- rpm-spec from http://elfutils.org/ -*- Name: elfutils Version: 0.187 -Release: 10 +Release: 11 Summary: A collection of utilities and DSOs to handle ELF files and DWARF data URL: http://elfutils.org/ License: GPLv3+ and (GPLv2+ or LGPLv3+) @@ -12,6 +12,9 @@ Patch1: Fix-error-of-parsing-object-file-perms.patch Patch2: Fix-issue-of-moving-files-by-ar-or-br.patch Patch3: Get-instance-correctly-for-eu-ar-N-option.patch Patch4: elfutils-Add-sw64-architecture.patch +Patch5: backport-PR29926-debuginfod-Fix-usage-of-deprecated-CURLINFO_.patch +Patch6: backport-debuginfod-Define-CURL_AT_LEAST_VERSION-if-necessary.patch +Patch7: backport-debuginfod-client-Use-CURLOPT_PROTOCOLS_STR-for-libc.patch Requires: elfutils-libelf = %{version}-%{release} Requires: elfutils-libs = %{version}-%{release} @@ -177,6 +180,9 @@ such servers to download those files on demand. %ifarch sw_64 %patch4 -p1 %endif +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 %build %configure --program-prefix=%{_programprefix} @@ -326,6 +332,12 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Mar 10 2023 yixiangzhike - 0.187-11 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:Fix failure of compiling with curl-7.88.1 + * Mon Nov 14 2022 wuzx - 0.187-10 - Type:feature - CVE:NA -- Gitee