aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2015-06-23 11:36:19 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2015-06-23 11:39:34 +0200
commitd0c62ef3877dacb14a390de19739e529a342ca37 (patch)
tree14acb14ca4936ed9b0d31985453a798b2bbb3037
parent42039c543f4af10ab8f79253e0f48f33592ee533 (diff)
downloadaports-d0c62ef3877dacb14a390de19739e529a342ca37.tar.bz2
aports-d0c62ef3877dacb14a390de19739e529a342ca37.tar.xz
main/pmacct: fix segfault due to stack size
ref #4272
-rw-r--r--main/pmacct/APKBUILD20
-rw-r--r--main/pmacct/stacksize.patch39
2 files changed, 53 insertions, 6 deletions
diff --git a/main/pmacct/APKBUILD b/main/pmacct/APKBUILD
index 8770ce45d6..dac3289e7a 100644
--- a/main/pmacct/APKBUILD
+++ b/main/pmacct/APKBUILD
@@ -1,17 +1,18 @@
# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
pkgname=pmacct
pkgver=1.5.1
-pkgrel=1
+pkgrel=2
pkgdesc="Measure, account, classify, aggregate and export IPv4 and IPv6 traffic"
url="http://www.pmacct.net/"
arch="all"
license="GPL"
depends=
-makedepends="bsd-compat-headers libpcap-dev libpq mariadb-dev postgresql-dev
+makedepends="bsd-compat-headers libpcap-dev mariadb-dev postgresql-dev
zlib-dev"
install=
subpackages="$pkgname-doc"
source="http://www.pmacct.net/$pkgname-$pkgver.tar.gz
+ stacksize.patch
pmacct.initd
pmacct.confd
pmacctd.conf
@@ -21,10 +22,14 @@ source="http://www.pmacct.net/$pkgname-$pkgver.tar.gz
_builddir="$srcdir"/$pkgname-$pkgver
-#prepare() {
-# cd "$_builddir"
-# apply patches here
-#}
+prepare() {
+ cd "$_builddir"
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
+}
build() {
cd "$_builddir"
@@ -64,6 +69,7 @@ package() {
}
md5sums="80a205e85fd06a30a761877568b01376 pmacct-1.5.1.tar.gz
+f856a83ef796811917452f8e6b346bac stacksize.patch
48ca9df1fce583936fc1e6d80bd0f0c3 pmacct.initd
394bf0687572261e90eecd70c33c8ede pmacct.confd
ecb85e4f9bcb1f6ef0ee1426f979be2b pmacctd.conf
@@ -71,6 +77,7 @@ ecb85e4f9bcb1f6ef0ee1426f979be2b pmacctd.conf
a3b1c231911f9bab7bfa73dbbcb308eb nfacctd.conf
7a549e51959946805a0c1d094213f08c uacctd.conf"
sha256sums="96134549a10947f3f6d610b670a26f1a54e01af4be0eff09bf48c19246d33584 pmacct-1.5.1.tar.gz
+52cd24d01ab43ee28877b18a85994f57230df4e76d4528512849e02a5135ee8e stacksize.patch
fe0ec3d26a0da0e07112e2dce85b921c188c974f5b4a22f623bdcf2f91fa3a0b pmacct.initd
02c3e0d5a19503d4be63244c77cbc47961d6f168026527ec2910c6c201a5d8fd pmacct.confd
616bf24f769a0d262a793adb4603e08fe2234f1cccc2bc0b7fabf565cf22e138 pmacctd.conf
@@ -78,6 +85,7 @@ fe0ec3d26a0da0e07112e2dce85b921c188c974f5b4a22f623bdcf2f91fa3a0b pmacct.initd
e21121a857bb16e76d8af087e5a2d2b1c555ac5f16808d8b7a01377f7d18accc nfacctd.conf
3cbdea18c609bb4822992ec79b34987b6fc9044550823ebbb349c44af7d8503e uacctd.conf"
sha512sums="c3a0ddaf1b8679df2097147ce844eb2a3e3058599aea457e463cd4e65a7601e0ce5bac5ca5e1c82afecd5edc92dae673eed3ed1787bfbd3e8ac2af5677885bb7 pmacct-1.5.1.tar.gz
+9e494dbd4c35eb960502c73d672f366267c10c36ef3f196b7358582ee94e1a7aa8532c456dbe1d5198e69fed17dbc0ca926bd6fb6ff6ac8cf8d06b3611d2f6af stacksize.patch
b109f2d64c83d6749a8c81784204e54a68ec7bbc146242f02e1fa7061647acc887921cdbf90a5ecc81186a87a5b4a5175a3b5e25f92e51b5dd1426fb390ef754 pmacct.initd
6078607dde8619f8fa5698f217c40a7e46ed85843923abecc87652d2e9df6db677898ee1965367247e6ac838d907533a8b1c7ab0515f3f2dc6f3fd4eb14bd5be pmacct.confd
fa1ead3ee4374ad84cccc0e7043fc86e95da555e2bde3815f03953587f03a609ec3aea227ebf85c9636e071921c5b094359d71d15055f866c05e113cda3b347b pmacctd.conf
diff --git a/main/pmacct/stacksize.patch b/main/pmacct/stacksize.patch
new file mode 100644
index 0000000000..3d2279166d
--- /dev/null
+++ b/main/pmacct/stacksize.patch
@@ -0,0 +1,39 @@
+--- ./src/thread_pool.c.orig 2015-06-23 11:22:18.408373704 -0200
++++ ./src/thread_pool.c 2015-06-23 11:31:55.926972746 -0200
+@@ -42,12 +42,15 @@
+ #define pthread_mutex_unlock debug_pthread_mutex_unlock
+ #endif
+
++/* set default stack size to 1MB */
++#define PMACCT_STACKSIZE 1024*1014
+
+ thread_pool_t *allocate_thread_pool(int count)
+ {
+ int i, rc;
+ thread_pool_t *pool;
+ thread_pool_item_t *worker;
++ pthread_attr_t attr, *attrptr = NULL;
+
+ // Allocate pool
+ pool = malloc(sizeof(thread_pool_t));
+@@ -88,7 +91,19 @@
+
+ /* Create the thread */
+ worker->thread = malloc(sizeof(pthread_t));
+- rc = pthread_create(worker->thread, NULL, thread_runner, worker);
++ rc = pthread_attr_init(&attr);
++ if (rc) {
++ printf("ERROR: pthread_attr_init failed: %s\n", strerror(rc));
++ } else {
++ rc = pthread_attr_setstacksize(&attr, PMACCT_STACKSIZE);
++ if (rc) {
++ printf("ERROR: pthread_attr_setstack failed: %s\n", strerror(rc));
++ } else {
++ attrptr=&attr;
++ }
++ }
++
++ rc = pthread_create(worker->thread, attrptr, thread_runner, worker);
+
+ if (rc) {
+ printf("ERROR: thread creation failed: %s\n", strerror(rc));