From cf002423bad8782fe420d449cddab4f93f9f022c Mon Sep 17 00:00:00 2001 From: yixiangzhike Date: Tue, 16 Aug 2022 11:57:59 +0800 Subject: [PATCH] Fix error of parsing object file perms Signed-off-by: yixiangzhike --- Fix-error-of-parsing-object-file-perms.patch | 46 ++++++++++++++++++++ elfutils.spec | 6 ++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 Fix-error-of-parsing-object-file-perms.patch diff --git a/Fix-error-of-parsing-object-file-perms.patch b/Fix-error-of-parsing-object-file-perms.patch new file mode 100644 index 0000000..cf487ab --- /dev/null +++ b/Fix-error-of-parsing-object-file-perms.patch @@ -0,0 +1,46 @@ +From 9e18fcfeb2c8ff471c11da58b05215e219be20fd Mon Sep 17 00:00:00 2001 +From: yixiangzhike +Date: Tue, 16 Aug 2022 09:49:35 +0800 +Subject: [PATCH] fix error of parsing object file perms + +--- + libelf/elf_begin.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c +index 17d9b1f..581d8ef 100644 +--- a/libelf/elf_begin.c ++++ b/libelf/elf_begin.c +@@ -997,10 +997,28 @@ __libelf_next_arhdr_wrlock (Elf *elf) + } \ + while (0) + ++#define INT_FIELD_HN(FIELD, HN) \ ++ do \ ++ { \ ++ char buf[sizeof (ar_hdr->FIELD) + 1]; \ ++ const char *string = ar_hdr->FIELD; \ ++ if (ar_hdr->FIELD[sizeof (ar_hdr->FIELD) - 1] != ' ') \ ++ { \ ++ *((char *) mempcpy (buf, ar_hdr->FIELD, sizeof (ar_hdr->FIELD))) \ ++ = '\0'; \ ++ string = buf; \ ++ } \ ++ if (sizeof (elf_ar_hdr->FIELD) <= sizeof (long int)) \ ++ elf_ar_hdr->FIELD = (__typeof (elf_ar_hdr->FIELD)) strtol (string, NULL, HN); \ ++ else \ ++ elf_ar_hdr->FIELD = (__typeof (elf_ar_hdr->FIELD)) strtoll (string, NULL, HN); \ ++ } \ ++ while (0) ++ + INT_FIELD (ar_date); + INT_FIELD (ar_uid); + INT_FIELD (ar_gid); +- INT_FIELD (ar_mode); ++ INT_FIELD_HN (ar_mode, 8); + INT_FIELD (ar_size); + + if (elf_ar_hdr->ar_size < 0) +-- +2.27.0 + diff --git a/elfutils.spec b/elfutils.spec index 3fd71e2..4b35846 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,13 +1,14 @@ # -*- rpm-spec from http://elfutils.org/ -*- Name: elfutils Version: 0.187 -Release: 2 +Release: 3 Summary: A collection of utilities and DSOs to handle ELF files and DWARF data URL: http://elfutils.org/ License: GPLv3+ and (GPLv2+ or LGPLv3+) Source: ftp://sourceware.org/pub/elfutils/%{version}/elfutils-%{version}.tar.bz2 Patch0: Fix-segfault-in-eu-ar-m.patch +Patch1: Fix-error-of-parsing-object-file-perms.patch Requires: elfutils-libelf = %{version}-%{release} Requires: elfutils-libs = %{version}-%{release} @@ -303,6 +304,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Aug 16 2022 yixiangzhike - 0.187-3 +- Fix error of parsing object file perms + * Tue Jul 19 2022 Hugel - 0.187-2 - Add some compression support -- Gitee