aboutsummaryrefslogtreecommitdiffstats
path: root/main/cryptsetup
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2014-12-18 14:08:33 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2014-12-18 14:11:10 +0100
commitd98d14163e40a9bbc90bb7ad84876ec069b94fdd (patch)
treeac4e10b6c0c006ebc7b5e06e520611afd0bfeaed /main/cryptsetup
parent71f12447ac2a224d355ffad971d544ab9698aba0 (diff)
downloadaports-d98d14163e40a9bbc90bb7ad84876ec069b94fdd.tar.bz2
aports-d98d14163e40a9bbc90bb7ad84876ec069b94fdd.tar.xz
main/cryptsetup: fix segfault in error reporting
Problem is that strerror_r in glibc is non-conformat with POSIX. ref #3470 reported upstream: https://code.google.com/p/cryptsetup/issues/detail?id=237
Diffstat (limited to 'main/cryptsetup')
-rw-r--r--main/cryptsetup/APKBUILD6
-rw-r--r--main/cryptsetup/strerror_r.patch23
2 files changed, 28 insertions, 1 deletions
diff --git a/main/cryptsetup/APKBUILD b/main/cryptsetup/APKBUILD
index 0c89afbfa8..2582299f0d 100644
--- a/main/cryptsetup/APKBUILD
+++ b/main/cryptsetup/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=cryptsetup
pkgver=1.6.6
-pkgrel=2
+pkgrel=3
pkgdesc="Userspace setup tool for transparent encryption of block devices using the Linux 2.6 cryptoapi"
url="http://code.google.com/p/cryptsetup/"
arch="all"
@@ -11,6 +11,7 @@ makedepends="lvm2-dev openssl-dev popt-dev util-linux-dev !libiconv-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="https://www.kernel.org/pub/linux/utils/cryptsetup/v${pkgver%.*}/cryptsetup-$pkgver.tar.gz
flush-stdout.patch
+ strerror_r.patch
dmcrypt.confd
dmcrypt.initd
"
@@ -61,13 +62,16 @@ libs() {
md5sums="24790bd4f4fa24570d7ea9af27ccf079 cryptsetup-1.6.6.tar.gz
7d5c8727ea417cabe86df67a9de1de16 flush-stdout.patch
+b52c14f089d3256b481d202d0d0844bf strerror_r.patch
1369aeaed84e41c8d585695596a24bd6 dmcrypt.confd
bef4b9289822c47a293f2a0be3526e9c dmcrypt.initd"
sha256sums="38ccd1ceff41760ccfbaaa5394ebb6117d69bd0ea2e00bf07c0d1353c41be6ac cryptsetup-1.6.6.tar.gz
6ac335bb14ff2f90de00769be20da4c5527101fab6593259a4d87be84904ae67 flush-stdout.patch
+f95844d176b46c85dbe66bb7d929cfbc9f220bd41bc84b2a9047ad6e1dfdb559 strerror_r.patch
0c30e081c0b8f879964ae49735f10b05a1d92f4f481042851958860945e13271 dmcrypt.confd
02faf27470ea0e50b764c923786724847e77dfdf9680a50cc202546cad2bf02f dmcrypt.initd"
sha512sums="ce8ea9402f0eb9f3ab920df51837492802dd35394422ef4643a0eb82e6aad67cf72ac428b7caf622539af188f9fe5ba530f06b522f65ed55b0133c5c67ab2723 cryptsetup-1.6.6.tar.gz
301e3e3da5a899e0a6f01f44fbf37bb6a3f5b6a4fb41243bae6d3b7aea747276e784626cd1b19721cc264652c10ae8c560c4d20094e33bb82fb2fae0160682c0 flush-stdout.patch
+c522c28b010d44fc8f14a8e997fd411505214c54b2c7070ed646e7ac0960dbfd0bbf450c9554361d8bdb45197812874ef14cb8508e00cf83601b05fc5bc2cd47 strerror_r.patch
d04ae17d3708ef20ade7afb223d4ef19e1b6812e0be8f9499e37e9c71344568b42030d9dd8f6918a9bfb211a3a94b40a9354e3b32a009cb165e84508d0a5e14b dmcrypt.confd
660d1a29294e8e01343aea0b92d9159d42891261d41313c3f9e77ed3bd69e648d19d3799a8ad1b00884b6f4c0f48d4e12cb406ca291e64b789e71ba70ab3c29f dmcrypt.initd"
diff --git a/main/cryptsetup/strerror_r.patch b/main/cryptsetup/strerror_r.patch
new file mode 100644
index 0000000000..6dde3d514a
--- /dev/null
+++ b/main/cryptsetup/strerror_r.patch
@@ -0,0 +1,23 @@
+diff --git a/src/utils_tools.c b/src/utils_tools.c
+index 4e8b0b4..1b4f3e5 100644
+--- a/src/utils_tools.c
++++ b/src/utils_tools.c
+@@ -176,11 +176,18 @@ void show_status(int errcode)
+ crypt_get_error(error, sizeof(error));
+
+ if (!error[0]) {
++#if defined(__GLIBC__)
++ /* GNU libc strerror_r is non-portable. */
+ error_ = strerror_r(-errcode, error, sizeof(error));
+ if (error_ != error) {
+ strncpy(error, error_, sizeof(error));
+ error[sizeof(error) - 1] = '\0';
+ }
++#else
++ /* POSIX variant */
++ if (strerror_r(-errcode, error, sizeof(error)) != 0)
++ error[0] = '\0';
++#endif
+ }
+
+ log_err(_("Command failed with code %i"), -errcode);