Add fix for build-ids in non-executable ELF files (#1433837)
This commit is contained in:
parent
20cf529b3c
commit
915296ceec
38
0020-build-files-exec-build-id.patch
Normal file
38
0020-build-files-exec-build-id.patch
Normal file
@ -0,0 +1,38 @@
|
||||
diff --git a/build/files.c b/build/files.c
|
||||
index 6021643..afa01cd 100644
|
||||
--- a/build/files.c
|
||||
+++ b/build/files.c
|
||||
@@ -1711,6 +1711,19 @@ static int generateBuildIDs(FileList fl)
|
||||
for (i = 0, flp = fl->files.recs; i < fl->files.used; i++, flp++) {
|
||||
struct stat sbuf;
|
||||
if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) {
|
||||
+ /* We determine whether this is a main or
|
||||
+ debug ELF based on path. */
|
||||
+ #define DEBUGPATH "/usr/lib/debug/"
|
||||
+ int isDbg = strncmp (flp->cpioPath,
|
||||
+ DEBUGPATH, strlen (DEBUGPATH)) == 0;
|
||||
+
|
||||
+ /* For the main package files mimic what find-debuginfo.sh does.
|
||||
+ Only check build-ids for executable files. Debug files are
|
||||
+ always non-executable. */
|
||||
+ if (!isDbg
|
||||
+ && (sbuf.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == 0)
|
||||
+ continue;
|
||||
+
|
||||
int fd = open (flp->diskPath, O_RDONLY);
|
||||
if (fd >= 0) {
|
||||
/* Only real ELF files, that are ET_EXEC, ET_DYN or
|
||||
@@ -1732,12 +1745,8 @@ static int generateBuildIDs(FileList fl)
|
||||
is 128 bits) and 64 bytes (largest sha3 is 512
|
||||
bits), common is 20 bytes (sha1 is 160 bits). */
|
||||
if (len >= 16 && len <= 64) {
|
||||
- /* We determine whether this is a main or
|
||||
- debug ELF based on path. */
|
||||
- #define DEBUGPATH "/usr/lib/debug/"
|
||||
int addid = 0;
|
||||
- if (strncmp (flp->cpioPath,
|
||||
- DEBUGPATH, strlen (DEBUGPATH)) == 0) {
|
||||
+ if (isDbg) {
|
||||
needDbg = 1;
|
||||
addid = 1;
|
||||
}
|
6
rpm.spec
6
rpm.spec
@ -29,7 +29,7 @@
|
||||
Summary: The RPM package management system
|
||||
Name: rpm
|
||||
Version: %{rpmver}
|
||||
Release: %{?snapver:0.%{snapver}.}12%{?dist}
|
||||
Release: %{?snapver:0.%{snapver}.}13%{?dist}
|
||||
Group: System Environment/Base
|
||||
Url: http://www.rpm.org/
|
||||
Source0: http://rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2
|
||||
@ -91,6 +91,7 @@ Patch265: 0016-debugedit-replace-files.patch
|
||||
Patch266: 0017-do-not-process-buildi-ds-for-noarch.patch
|
||||
Patch267: 0018-update-build-id-endian.patch
|
||||
Patch268: 0019-fix-sed-build-id-match-test.patch
|
||||
Patch269: 0020-build-files-exec-build-id.patch
|
||||
|
||||
# OpenSSL backend
|
||||
Patch300: 0001-Add-OpenSSL-support-for-digest-and-signatures.patch
|
||||
@ -595,8 +596,9 @@ exit 0
|
||||
%doc doc/librpm/html/*
|
||||
|
||||
%changelog
|
||||
* Mon Mar 20 2017 Mark Wielaard <mjw@redhat.com>
|
||||
* Mon Mar 20 2017 Mark Wielaard <mjw@redhat.com> - 4.13.0.1-13
|
||||
- Add tests fix for sed file build-id regexp matching.
|
||||
- Add fix for build-ids in non-executable ELF files (#1433837).
|
||||
|
||||
* Fri Mar 17 2017 Mark Wielaard <mjw@redhat.com> - 4.13.0.1-12
|
||||
- Fix reading and updating (cross-endian) build-id information.
|
||||
|
Loading…
Reference in New Issue
Block a user