0.178-5 - Add elfutils-0.178-debuginfod-no-cache.patch.

This commit is contained in:
Mark Wielaard 2019-12-09 20:07:02 +01:00
parent 3eb62aff83
commit 9558bcc5bf
2 changed files with 73 additions and 1 deletions

View File

@ -0,0 +1,67 @@
commit d8bad02afc7b7f30402b4e0e458df874a6d600da
Author: Mark Wielaard <mark@klomp.org>
Date: Mon Dec 9 19:38:19 2019 +0100
debuginfod: Check the DEBUGINFOD_URLS environment variable early in client.
If the debuginfod-client isn't configured we should do as little
as possible. Simply return early with ENOSYS if no servers are
configured. This means we won't check
This does change the behavior of the debuginfod_find calls slightly.
Previously we would setup and check the cache if the given build-id
was valid. Which might have provided a result if an earlier client
had run with the same cache and valid server URLs which knew about
that particular build-id. Now we don't return any cached results
unless at least one server is configured.
This prevents selinux errors when the library is used in a confined
setup.
Signed-off-by: Mark Wielaard <mark@klomp.org>
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 302ea2dc..ab7b4e13 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -301,6 +301,16 @@ debuginfod_query_server (debuginfod_client *c,
char target_cache_tmppath[PATH_MAX*5];
char suffix[PATH_MAX*2];
char build_id_bytes[MAX_BUILD_ID_BYTES * 2 + 1];
+ int rc;
+
+ /* Is there any server we can query? If not, don't do any work,
+ just return with ENOSYS. Don't even access the cache. */
+ urls_envvar = getenv(server_urls_envvar);
+ if (urls_envvar == NULL || urls_envvar[0] == '\0')
+ {
+ rc = -ENOSYS;
+ goto out;
+ }
/* Copy lowercase hex representation of build_id into buf. */
if ((build_id_len >= MAX_BUILD_ID_BYTES) ||
@@ -373,7 +383,7 @@ debuginfod_query_server (debuginfod_client *c,
/* XXX combine these */
snprintf(interval_path, sizeof(interval_path), "%s/%s", cache_path, cache_clean_interval_filename);
snprintf(maxage_path, sizeof(maxage_path), "%s/%s", cache_path, cache_max_unused_age_filename);
- int rc = debuginfod_init_cache(cache_path, interval_path, maxage_path);
+ rc = debuginfod_init_cache(cache_path, interval_path, maxage_path);
if (rc != 0)
goto out;
rc = debuginfod_clean_cache(c, cache_path, interval_path, maxage_path);
@@ -390,14 +400,6 @@ debuginfod_query_server (debuginfod_client *c,
return fd;
}
-
- urls_envvar = getenv(server_urls_envvar);
- if (urls_envvar == NULL || urls_envvar[0] == '\0')
- {
- rc = -ENOSYS;
- goto out;
- }
-
if (getenv(server_timeout_envvar))
server_timeout = atoi (getenv(server_timeout_envvar));

View File

@ -1,6 +1,6 @@
Name: elfutils
Version: 0.178
%global baserelease 4
%global baserelease 5
Release: %{baserelease}%{?dist}
URL: http://elfutils.org/
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
@ -55,6 +55,7 @@ BuildRequires: curl
# Patches
Patch1: elfutils-0.178-pt-gnu-prop.patch
Patch2: elfutils-0.178-debuginfod-no-cache.patch
%description
Elfutils is a collection of utilities, including stack (to show
@ -247,6 +248,7 @@ such servers to download those files on demand.
# Apply patches
%patch1 -p1 -b .pt-gnu-prop
%patch2 -p1 -b .debuginfod-client-cache
# In case the above patches added any new test scripts, make sure they
# are executable.
@ -424,6 +426,9 @@ exit 0
%systemd_postun_with_restart debuginfod.service
%changelog
* Mon Dec 9 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-5
- Add elfutils-0.178-debuginfod-no-cache.patch.
* Thu Nov 28 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-4
- Define %%{depsuffix} before use.