Hi,

this patch fixes a couple of resource leaks and unchecked return and an
uninitialised value found by Coverity.

bye,
Sumit
From b39269b5adf5d2ae6076d5aa4394e68924027ce6 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sb...@redhat.com>
Date: Tue, 2 Oct 2012 11:25:04 +0200
Subject: [PATCH] Fix various issues found by Coverity

---
 daemons/ipa-sam/ipa_sam.c                                    |  2 +-
 daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.c              |  6 ++++--
 .../ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c   | 12 +++++++-----
 .../ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_extop.c    |  6 ++++--
 daemons/ipa-slapi-plugins/ipa-range-check/ipa_range_check.c  |  3 ++-
 daemons/ipa-slapi-plugins/ipa-sidgen/ipa_sidgen_task.c       |  5 ++++-
 6 Dateien geändert, 22 Zeilen hinzugefügt(+), 12 Zeilen entfernt(-)

diff --git a/daemons/ipa-sam/ipa_sam.c b/daemons/ipa-sam/ipa_sam.c
index 
3d4f741c157fb624e272d800bd9e0cdf9edb9444..db300022af0a29c32a2df5e5ef2bc12f39ed2886
 100644
--- a/daemons/ipa-sam/ipa_sam.c
+++ b/daemons/ipa-sam/ipa_sam.c
@@ -1522,7 +1522,7 @@ static int set_cross_realm_pw(struct ldapsam_privates 
*ldap_state,
        krb5_error_code krberr;
        krb5_context krbctx;
        krb5_principal service_princ;
-       struct keys_container keys;
+       struct keys_container keys = {0, NULL};
        char *err_msg;
        struct berval *reqdata = NULL;
        struct berval *retdata = NULL;
diff --git a/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.c 
b/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.c
index 
d7a59d51229ca9fbf754a2600e42339dcc235698..54d44ebf64b1efa0dda06773736d3413a6b70977
 100644
--- a/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.c
+++ b/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.c
@@ -124,13 +124,15 @@ static int ipa_cldap_init_service(Slapi_PBlock *pb,
     slapi_pblock_get(pb, SLAPI_PLUGIN_CONFIG_ENTRY, &e);
     if (!e) {
         LOG_FATAL("Plugin configuration not found!\n");
-        return -1;
+        ret = -1;
+        goto done;
     }
 
     ctx->base_dn = slapi_entry_attr_get_charptr(e, "nsslapd-basedn");
     if (!ctx->base_dn) {
         LOG_FATAL("Plugin configuration not found!\n");
-        return -1;
+        ret = -1;
+        goto done;
     }
 
     /* create a stop pipe so the main DS thread can interrupt the poll()
diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c 
b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
index 
f48bead04cbb18b040557b7b78a6cb27a3368422..47d4d68d1d7f5e4f02ad68849b840eaa63f7c33d
 100644
--- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
+++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
@@ -137,10 +137,12 @@ int parse_request_data(struct berval *req_val, struct 
extdom_req **_req)
             break;
         default:
             ber_free(ber, 1);
+            free(req);
             return LDAP_PROTOCOL_ERROR;
     }
     ber_free(ber, 1);
     if (tag == LBER_ERROR) {
+        free(req);
         return LDAP_PROTOCOL_ERROR;
     }
 
@@ -284,11 +286,6 @@ static int get_domain_info(struct ipa_extdom_ctx *ctx, 
const char *domain_name,
     domain_info->flat_name = slapi_entry_attr_get_charptr(e[0],
                                                           "ipaNTFlatName");
 
-    /* TODO: read range from LDAP server */
-/*
-    range.min = 200000;
-    range.max = 400000;
-*/
     ret = set_domain_range(ctx, domain_info->sid, &range);
     if (ret != 0) {
         goto done;
@@ -313,6 +310,11 @@ done:
     slapi_free_search_results_internal(pb);
     slapi_pblock_destroy(pb);
     free(filter);
+
+    if (ret != 0) {
+        free_domain_info(domain_info);
+    }
+
     return ret;
 
 }
diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_extop.c 
b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_extop.c
index 
d5a2f604c4a61bda04dd026ace4b53ea5c2c3645..f36878c37a7fca2b06db70a4f7694ee53d7c9422
 100644
--- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_extop.c
+++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_extop.c
@@ -170,13 +170,15 @@ static int ipa_extdom_init_ctx(Slapi_PBlock *pb, struct 
ipa_extdom_ctx **_ctx)
     slapi_pblock_get(pb, SLAPI_PLUGIN_CONFIG_ENTRY, &e);
     if (!e) {
         LOG_FATAL("Plugin configuration not found!\n");
-        return -1;
+        ret = -1;
+        goto done;
     }
 
     ctx->base_dn = slapi_entry_attr_get_charptr(e, "nsslapd-basedn");
     if (!ctx->base_dn) {
         LOG_FATAL("Base DN not found in plugin configuration not found!\n");
-        return -1;
+        ret = -1;
+        goto done;
     }
 
 
diff --git a/daemons/ipa-slapi-plugins/ipa-range-check/ipa_range_check.c 
b/daemons/ipa-slapi-plugins/ipa-range-check/ipa_range_check.c
index 
499e54a9c4a4c9134a231c0cd09e700390565a14..82479bec8184adb28cbf641d8ff019de64099818
 100644
--- a/daemons/ipa-slapi-plugins/ipa-range-check/ipa_range_check.c
+++ b/daemons/ipa-slapi-plugins/ipa-range-check/ipa_range_check.c
@@ -90,7 +90,8 @@ static int slapi_entry_to_range_info(struct slapi_entry 
*entry,
 
     range->name = slapi_entry_attr_get_charptr(entry, IPA_CN);
     if (range->name == NULL) {
-        return EINVAL;
+        ret = EINVAL;
+        goto done;
     }
 
     ul_val = slapi_entry_attr_get_ulong(entry, IPA_BASE_ID);
diff --git a/daemons/ipa-slapi-plugins/ipa-sidgen/ipa_sidgen_task.c 
b/daemons/ipa-slapi-plugins/ipa-sidgen/ipa_sidgen_task.c
index 
ffbc9c636e32b0c0a3960ec76eda378a94c504fe..9e474e83dd0e1bfc52b2e2da3fda12420d2ea281
 100644
--- a/daemons/ipa-slapi-plugins/ipa-sidgen/ipa_sidgen_task.c
+++ b/daemons/ipa-slapi-plugins/ipa-sidgen/ipa_sidgen_task.c
@@ -71,7 +71,10 @@ static const char *fetch_attr(Slapi_Entry *e, const char 
*attrname,
 
     if (slapi_entry_attr_find(e, attrname, &attr) != 0)
         return default_val;
-    slapi_attr_first_value(attr, &val);
+
+    if (slapi_attr_first_value(attr, &val) == -1)
+        return default_val;
+
     return slapi_value_get_string(val);
 }
 
-- 
1.7.11.4

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to