summaryrefslogtreecommitdiff
path: root/system/pax-utils
diff options
context:
space:
mode:
Diffstat (limited to 'system/pax-utils')
-rw-r--r--system/pax-utils/APKBUILD42
-rw-r--r--system/pax-utils/fix-eitype.patch28
2 files changed, 70 insertions, 0 deletions
diff --git a/system/pax-utils/APKBUILD b/system/pax-utils/APKBUILD
new file mode 100644
index 000000000..7670ff965
--- /dev/null
+++ b/system/pax-utils/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=pax-utils
+pkgver=1.2.2
+pkgrel=1
+pkgdesc="ELF related utils for ELF 32/64 binaries"
+url="https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities"
+arch="all"
+options="!check" # Requires unpackaged dependencies
+license="GPL-2.0"
+depends="scanelf"
+makedepends_build=""
+makedepends_host="linux-headers libcap-dev"
+makedepends="$makedepends_build $makedepends_host"
+source="http://distfiles.gentoo.org/distfiles/${pkgname}-${pkgver}.tar.xz
+ fix-eitype.patch"
+subpackages="$pkgname-doc scanelf:_scanelf"
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ make USE_CAP=yes
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir/" install
+
+ # Don't conflict with main/lddtree
+ rm -f "$pkgdir"/usr/bin/lddtree
+}
+
+_scanelf() {
+ pkgdesc="Scan ELF binaries for stuff"
+ depends=
+ replaces="pax-utils"
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/scanelf "$subpkgdir"/usr/bin/
+}
+
+sha512sums="6bafe93f3b84d4595b6adfa09b46a3dd249f309fe836d90115e9aa5fcc7da37b03f743e80719dfe6bcdb739ce6ec3843170a5513e196c348721f850e19d3e38c pax-utils-1.2.2.tar.xz
+7150f162a64d9095fab4f73c4a0c531550e2286d6e09a686c62b3a692353b9e33a770ad196f647b5f26b5acafcdef05187dc9d40b40b46d508900dc3e33324a6 fix-eitype.patch"
diff --git a/system/pax-utils/fix-eitype.patch b/system/pax-utils/fix-eitype.patch
new file mode 100644
index 000000000..fe54ee887
--- /dev/null
+++ b/system/pax-utils/fix-eitype.patch
@@ -0,0 +1,28 @@
+elf->data is 'signed char' and casting it to 'int' will sign extend.
+Most non-intrusive fix is to just have get_elfeitype() take type as
+'unsigned char' to make implicit cast.
+
+diff -ru pax-utils-1.2.2.orig/paxelf.c pax-utils-1.2.2/paxelf.c
+--- pax-utils-1.2.2.orig/paxelf.c 2017-01-24 20:24:53.000000000 +0000
++++ pax-utils-1.2.2/paxelf.c 2017-09-26 07:01:00.115498082 +0000
+@@ -65,7 +65,7 @@
+ QUERY(ELFOSABI_STANDALONE),
+ { 0, 0 }
+ };
+-const char *get_elfeitype(int ei_type, int type)
++const char *get_elfeitype(int ei_type, unsigned char type)
+ {
+ switch (ei_type) {
+ case EI_CLASS: return find_pairtype(elf_ei_class, type);
+diff -ru pax-utils-1.2.2.orig/paxelf.h pax-utils-1.2.2/paxelf.h
+--- pax-utils-1.2.2.orig/paxelf.h 2017-01-24 20:24:53.000000000 +0000
++++ pax-utils-1.2.2/paxelf.h 2017-09-26 07:00:44.941879820 +0000
+@@ -56,7 +56,7 @@
+ extern elfobj *_readelf(const char *filename, int read_only);
+ #define readelf(filename) _readelf(filename, 1)
+ extern void unreadelf(elfobj *elf);
+-extern const char *get_elfeitype(int ei_type, int type);
++extern const char *get_elfeitype(int ei_type, unsigned char type);
+ extern const char *get_elfetype(elfobj *elf);
+ extern const char *get_endian(elfobj *elf);
+ extern const char *get_elfosabi(elfobj *elf);