Hello,
several warnings from Clang static analyzer popped up after upgrade to Fedora
19. Attached patches should fix all problems found by
clang-analyzer-3.3-0.6.rc3.fc19.x86_64.
--
Petr^2 Spacek
From fe43bd17172c899e86e105e398dfe3a0dd27422d Mon Sep 17 00:00:00 2001
From: Petr Spacek <pspa...@redhat.com>
Date: Mon, 8 Jul 2013 10:27:44 +0200
Subject: [PATCH] Remove false positive NULL dereference reported by Clang
static analyzer.
The potential problem was reported by clang-analyzer-3.3-0.6.rc3.fc19.x86_64.
http://llvm.org/bugs/show_bug.cgi?id=16541
Signed-off-by: Petr Spacek <pspa...@redhat.com>
---
src/ldap_helper.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/ldap_helper.c b/src/ldap_helper.c
index c98c9cb955252d1381c514a454e6679b8dc93521..25d86862130ad14a62d716f03a3b3a93118cdf77 100644
--- a/src/ldap_helper.c
+++ b/src/ldap_helper.c
@@ -3513,6 +3513,9 @@ ldap_pool_getconnection(ldap_pool_t *pool, ldap_connection_t ** conn)
ldap_conn = *conn;
CHECK(semaphore_wait_timed(&pool->conn_semaphore));
+ /* Following assertion is necessary to convince clang static analyzer
+ * that the loop is always entered. */
+ REQUIRE(pool->connections > 0);
for (i = 0; i < pool->connections; i++) {
ldap_conn = pool->conns[i];
if (isc_mutex_trylock(&ldap_conn->lock) == ISC_R_SUCCESS)
--
1.8.3.1
From b2918086c7bead609dc2a2d7a494322fe5106bb3 Mon Sep 17 00:00:00 2001
From: Petr Spacek <pspa...@redhat.com>
Date: Mon, 8 Jul 2013 10:40:51 +0200
Subject: [PATCH] Modify ldap_pool_destroy() to handle partially allocated
ldap_pool_t.
The potential problem was reported by clang-analyzer-3.3-0.6.rc3.fc19.x86_64.
Signed-off-by: Petr Spacek <pspa...@redhat.com>
---
src/ldap_helper.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/ldap_helper.c b/src/ldap_helper.c
index 25d86862130ad14a62d716f03a3b3a93118cdf77..514b81e8da1539e9402cef8a07f8feafeb13ff4d 100644
--- a/src/ldap_helper.c
+++ b/src/ldap_helper.c
@@ -3473,6 +3473,7 @@ cleanup:
ldap_pool_destroy(&pool);
return result;
}
+
static void
ldap_pool_destroy(ldap_pool_t **poolp)
{
@@ -3486,14 +3487,16 @@ ldap_pool_destroy(ldap_pool_t **poolp)
if (pool == NULL)
return;
- for (i = 0; i < pool->connections; i++) {
- ldap_conn = pool->conns[i];
- if (ldap_conn != NULL)
- destroy_ldap_connection(&ldap_conn);
- }
+ if (pool->conns != NULL) {
+ for (i = 0; i < pool->connections; i++) {
+ ldap_conn = pool->conns[i];
+ if (ldap_conn != NULL)
+ destroy_ldap_connection(&ldap_conn);
+ }
- SAFE_MEM_PUT(pool->mctx, pool->conns,
- pool->connections * sizeof(ldap_connection_t *));
+ SAFE_MEM_PUT(pool->mctx, pool->conns,
+ pool->connections * sizeof(ldap_connection_t *));
+ }
semaphore_destroy(&pool->conn_semaphore);
--
1.8.3.1
_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel