Hello community, here is the log from the commit of package libapr1 for openSUSE:Factory checked in at 2014-08-27 22:18:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libapr1 (Old) and /work/SRC/openSUSE:Factory/.libapr1.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libapr1" Changes: -------- --- /work/SRC/openSUSE:Factory/libapr1/libapr1.changes 2014-06-25 15:24:18.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libapr1.new/libapr1.changes 2014-08-27 22:18:06.000000000 +0200 @@ -1,0 +2,8 @@ +Tue Aug 19 23:28:46 UTC 2014 - [email protected] + +- 0004-Backport-r1593600-from-1.6.patch memory leak apr_pvsprintf() +- 0005-Backport-r1593612-from-1.6.patch Missing error codes in apr_error_string() +- 0007-backport-r1604596-1604598-from-trunk.patch memory corruption in apr_skiplist +- 0009-Merge-r1610854-from-trunk.patch posix semaphore must handle EINTR. + +------------------------------------------------------------------- New: ---- 0004-Backport-r1593600-from-1.6.patch 0005-Backport-r1593612-from-1.6.patch 0007-backport-r1604596-1604598-from-trunk.patch 0009-Merge-r1610854-from-trunk.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libapr1.spec ++++++ --- /var/tmp/diff_new_pack.ovqwXa/_old 2014-08-27 22:18:08.000000000 +0200 +++ /var/tmp/diff_new_pack.ovqwXa/_new 2014-08-27 22:18:08.000000000 +0200 @@ -31,6 +31,10 @@ Patch1: string-compare.diff Patch4: apr-1.4.5-linux3.patch Patch5: apr-visibility.patch +Patch6: 0004-Backport-r1593600-from-1.6.patch +Patch7: 0005-Backport-r1593612-from-1.6.patch +Patch8: 0007-backport-r1604596-1604598-from-trunk.patch +Patch9: 0009-Merge-r1610854-from-trunk.patch BuildRequires: doxygen BuildRequires: fdupes BuildRequires: libtool @@ -79,7 +83,10 @@ %patch1 %patch4 %patch5 -p1 - +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 # Do not put date to doxy content sed -i \ -e '4 iHTML_TIMESTAMP=NO' \ ++++++ 0004-Backport-r1593600-from-1.6.patch ++++++ >From dc099b699dc673f61a7a130d83e63a2c8c06f5bb Mon Sep 17 00:00:00 2001 From: Stefan Fritsch <[email protected]> Date: Fri, 9 May 2014 19:55:08 +0000 Subject: [PATCH 04/13] Backport r1593600 from 1.6: Backport r1438940 from trunk: Don't leak memnodes in apr_pvsprintf() if out of memory and no pool abort function is set git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.5.x@1593610 13f79535-47bb-0310-9956-ffa450edef68 --- memory/unix/apr_pools.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c index 5c1a1ff..20e4254 100644 --- a/memory/unix/apr_pools.c +++ b/memory/unix/apr_pools.c @@ -1135,21 +1135,12 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) * room to hold the NUL terminator. */ if (ps.node->first_avail == ps.node->endp) { - if (psprintf_flush(&ps.vbuff) == -1) { - if (pool->abort_fn) { - pool->abort_fn(APR_ENOMEM); - } - - return NULL; - } + if (psprintf_flush(&ps.vbuff) == -1) + goto error; } - if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) { - if (pool->abort_fn) - pool->abort_fn(APR_ENOMEM); - - return NULL; - } + if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) + goto error; strp = ps.vbuff.curpos; *strp++ = '\0'; @@ -1195,6 +1186,15 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) list_insert(active, node); return strp; + +error: + if (pool->abort_fn) + pool->abort_fn(APR_ENOMEM); + if (ps.got_a_new_node) { + ps.node->next = ps.free; + allocator_free(pool->allocator, ps.node); + } + return NULL; } -- 2.0.4 ++++++ 0005-Backport-r1593612-from-1.6.patch ++++++ >From 5a7aa108394a9a59079c73a0ff875907b8992cf0 Mon Sep 17 00:00:00 2001 From: Stefan Fritsch <[email protected]> Date: Fri, 9 May 2014 20:01:43 +0000 Subject: [PATCH 05/13] Backport r1593612 from 1.6: Backport r1593611 from trunk: Add some missing error messages to apr_error_string git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.5.x@1593613 13f79535-47bb-0310-9956-ffa450edef68 --- misc/unix/errorcodes.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/misc/unix/errorcodes.c b/misc/unix/errorcodes.c index 75567c2..f553a37 100644 --- a/misc/unix/errorcodes.c +++ b/misc/unix/errorcodes.c @@ -39,6 +39,8 @@ static char *stuffbuffer(char *buf, apr_size_t bufsize, const char *s) static char *apr_error_string(apr_status_t statcode) { switch (statcode) { + case APR_ENOSTAT: + return "Could not perform a stat on the file."; case APR_ENOPOOL: return "A new pool could not be created."; case APR_EBADDATE: @@ -73,7 +75,10 @@ static char *apr_error_string(apr_status_t statcode) return "The specified IP address is invalid."; case APR_EBADMASK: return "The specified network mask is invalid."; - + case APR_ESYMNOTFOUND: + return "Could not find the requested symbol."; + case APR_ENOTENOUGHENTROPY: + return "Not enough entropy to continue."; case APR_INCHILD: return "Your code just forked, and you are currently executing in the " @@ -128,10 +133,12 @@ static char *apr_error_string(apr_status_t statcode) return "The given path is misformatted or contained invalid characters"; case APR_EPATHWILD: return "The given path contained wildcard characters"; + case APR_EBUSY: + return "The given lock was busy."; case APR_EPROC_UNKNOWN: return "The process is not recognized."; case APR_EGENERAL: - return "Internal error"; + return "Internal error (specific information not available)"; default: return "Error string not specified yet"; } -- 2.0.4 ++++++ 0007-backport-r1604596-1604598-from-trunk.patch ++++++ >From 05ec343f6afde074e4106573ac279895aa77f450 Mon Sep 17 00:00:00 2001 From: Eric Covener <[email protected]> Date: Thu, 26 Jun 2014 12:47:31 +0000 Subject: [PATCH 07/13] backport r1604596,1604598 from trunk: Add a basic skiplist test. Based on test program posted to PR 56654 by Takashi Sato. Submitted By: Takashi Sato, covener Committed By: covener apr_skiplist becomes corrupt when nodes are reused. Submitted By: Takashi Sato <takashi tks st>, covener committed By: covener git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.5.x@1605769 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 +- tables/apr_skiplist.c | 2 - test/Makefile.in | 2 +- test/abts_tests.h | 3 +- test/testskiplist.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/testutil.h | 1 + 6 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 test/testskiplist.c diff --git a/tables/apr_skiplist.c b/tables/apr_skiplist.c index effcf60..07e9ccc 100644 --- a/tables/apr_skiplist.c +++ b/tables/apr_skiplist.c @@ -387,11 +387,9 @@ APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert_compare(apr_skiplist *sl, vo (apr_skiplistnode *)apr_skiplist_alloc(sl, sizeof(apr_skiplistnode)); sl->top->up->down = sl->top; sl->top = sl->topend = sl->top->up; -#if 0 sl->top->prev = sl->top->next = sl->top->nextindex = sl->top->previndex = sl->top->up = NULL; sl->top->data = NULL; -#endif sl->top->sl = sl; } ch = sl->height; -- 2.0.4 ++++++ 0009-Merge-r1610854-from-trunk.patch ++++++ >From eb5e8e0dd4c6295905e8c4fe4f1cfec42d8ad761 Mon Sep 17 00:00:00 2001 From: Jeff Trawick <[email protected]> Date: Wed, 16 Jul 2014 13:26:17 +0000 Subject: [PATCH 09/13] Merge r1610854 from trunk: Resolve failures with the POSIX sem implementation of APR process mutexes (and thus global mutexes) in environments which receive signals. EINTR is now handled on the sem_* calls that are documented as exposing EINTR in the Linux, FreeBSD, and/or Solaris docs. There are a few other calls that haven't been updated: sem_unlink(), sem_post(), and sem_close(). git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.5.x@1611000 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ locks/unix/proc_mutex.c | 22 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/locks/unix/proc_mutex.c b/locks/unix/proc_mutex.c index fa8a872..32012a7 100644 --- a/locks/unix/proc_mutex.c +++ b/locks/unix/proc_mutex.c @@ -114,7 +114,9 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, usec = apr_time_usec(now); apr_snprintf(semname, sizeof(semname), "/ApR.%lxZ%lx", sec, usec); } - psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1); + do { + psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1); + } while (psem == (sem_t *)SEM_FAILED && errno == EINTR); if (psem == (sem_t *)SEM_FAILED) { if (errno == ENAMETOOLONG) { /* Oh well, good try */ @@ -122,7 +124,9 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, } else { return errno; } - psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1); + do { + psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1); + } while (psem == (sem_t *)SEM_FAILED && errno == EINTR); } if (psem == (sem_t *)SEM_FAILED) { @@ -140,7 +144,12 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex) { - if (sem_wait(mutex->psem_interproc) < 0) { + int rc; + + do { + rc = sem_wait(mutex->psem_interproc); + } while (rc < 0 && errno == EINTR); + if (rc < 0) { return errno; } mutex->curr_locked = 1; @@ -149,7 +158,12 @@ static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex) static apr_status_t proc_mutex_posix_tryacquire(apr_proc_mutex_t *mutex) { - if (sem_trywait(mutex->psem_interproc) < 0) { + int rc; + + do { + rc = sem_trywait(mutex->psem_interproc); + } while (rc < 0 && errno == EINTR); + if (rc < 0) { if (errno == EAGAIN) { return APR_EBUSY; } -- 2.0.4 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
