diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2015-06-23 11:36:19 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2015-06-23 11:39:34 +0200 |
commit | d0c62ef3877dacb14a390de19739e529a342ca37 (patch) | |
tree | 14acb14ca4936ed9b0d31985453a798b2bbb3037 | |
parent | 42039c543f4af10ab8f79253e0f48f33592ee533 (diff) | |
download | aports-d0c62ef3877dacb14a390de19739e529a342ca37.tar.bz2 aports-d0c62ef3877dacb14a390de19739e529a342ca37.tar.xz |
main/pmacct: fix segfault due to stack size
ref #4272
-rw-r--r-- | main/pmacct/APKBUILD | 20 | ||||
-rw-r--r-- | main/pmacct/stacksize.patch | 39 |
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)); |