svn commit: samba r16334 - branches/SAMBA_3_0/source/passdb trunk/source/passdb

vlendec at samba.org vlendec at samba.org
Sat Jun 17 07:20:48 GMT 2006


Author: vlendec
Date: 2006-06-17 07:20:47 +0000 (Sat, 17 Jun 2006)
New Revision: 16334

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16334

Log:
Fix Klocwork ID's 1087, 1095, 1096, 1098, 1099, 1101, 1102, 1105, 1107, 1109,
1111

Volker


Modified:
   branches/SAMBA_3_0/source/passdb/pdb_ldap.c
   trunk/source/passdb/pdb_ldap.c


Changeset:
Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c
===================================================================
--- branches/SAMBA_3_0/source/passdb/pdb_ldap.c	2006-06-17 02:20:39 UTC (rev 16333)
+++ branches/SAMBA_3_0/source/passdb/pdb_ldap.c	2006-06-17 07:20:47 UTC (rev 16334)
@@ -223,7 +223,10 @@
 	if (mem_ctx == NULL)
 		return NT_STATUS_NO_MEMORY;
 
-	attrs = TALLOC_ARRAY(mem_ctx, const char *, 2);
+	if ((attrs = TALLOC_ARRAY(mem_ctx, const char *, 2)) == NULL) {
+		ntstatus = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	/* if we got a syncrepl-rid (up to three digits long) we speak with a consumer */
 	rid = lp_parm_int(-1, "ldapsam", "syncrepl_rid", -1);
@@ -1747,6 +1750,9 @@
 	result = pdb_get_backend_private_data(newpwd, my_methods);
 	if (!result) {
 		attr_list = get_userattr_list(NULL, ldap_state->schema_ver);
+		if (pdb_get_username(newpwd) == NULL) {
+			return NT_STATUS_INVALID_PARAMETER;
+		}
 		rc = ldapsam_search_suffix_by_name(ldap_state, pdb_get_username(newpwd), &result, attr_list );
 		TALLOC_FREE( attr_list );
 		if (rc != LDAP_SUCCESS) {
@@ -2350,6 +2356,10 @@
 				 LDAP_OBJ_POSIXGROUP,
 				 LDAP_OBJ_GROUPMAP,
 				 sid_string_static(group));
+	if (filter == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	rc = smbldap_search(conn, lp_ldap_group_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, id_attrs, 0,
@@ -2525,6 +2535,10 @@
 	*pp_sids = NULL;
 	num_sids = 0;
 
+	if (pdb_get_username(user) == NULL) {
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
 	escape_name = escape_ldap_string_alloc(pdb_get_username(user));
 	if (escape_name == NULL)
 		return NT_STATUS_NO_MEMORY;
@@ -2534,6 +2548,10 @@
 				 "(&(objectClass=%s)(uid=%s))",
 				 LDAP_OBJ_SAMBASAMACCOUNT,
 				 escape_name);
+	if (filter == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	rc = smbldap_search(conn, lp_ldap_user_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
@@ -2570,6 +2588,10 @@
 	filter = talloc_asprintf(mem_ctx,
 				 "(&(objectClass=%s)(|(memberUid=%s)(gidNumber=%d)))",
 				 LDAP_OBJ_POSIXGROUP, escape_name, primary_gid);
+	if (filter == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	rc = smbldap_search(conn, lp_ldap_group_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
@@ -3379,6 +3401,10 @@
 
 	filter = talloc_asprintf(mem_ctx, "%s))", filter);
 
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
 	rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_group_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
 
@@ -3868,11 +3894,18 @@
 		num += 1;
 	va_end(ap);
 
-	result = TALLOC_ARRAY(mem_ctx, const char *, num+1);
+	if ((result = TALLOC_ARRAY(mem_ctx, const char *, num+1)) == NULL) {
+		return NULL;
+	}
 
 	va_start(ap, mem_ctx);
-	for (i=0; i<num; i++)
-		result[i] = talloc_strdup(mem_ctx, va_arg(ap, const char*));
+	for (i=0; i<num; i++) {
+		result[i] = talloc_strdup(result, va_arg(ap, const char*));
+		if (result[i] == NULL) {
+			talloc_free(result);
+			return NULL;
+		}
+	}
 	va_end(ap);
 
 	result[num] = NULL;
@@ -4799,6 +4832,9 @@
 				 pdb_get_username(sam_acct),
 				 LDAP_OBJ_POSIXACCOUNT,
 				 LDAP_OBJ_SAMBASAMACCOUNT);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
 	if (rc != LDAP_SUCCESS) {
@@ -5014,6 +5050,9 @@
 				 sid_string_static(&group_sid),
 				 LDAP_OBJ_POSIXGROUP,
 				 LDAP_OBJ_GROUPMAP);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
 	if (rc != LDAP_SUCCESS) {
@@ -5125,6 +5164,9 @@
 				 sid_string_static(&member_sid),
 				 LDAP_OBJ_POSIXACCOUNT,
 				 LDAP_OBJ_SAMBASAMACCOUNT);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* get the member uid */
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
@@ -5291,6 +5333,9 @@
 				 pdb_get_username(sampass),
 				 LDAP_OBJ_POSIXACCOUNT,
 				 LDAP_OBJ_SAMBASAMACCOUNT);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
 	if (rc != LDAP_SUCCESS) {

Modified: trunk/source/passdb/pdb_ldap.c
===================================================================
--- trunk/source/passdb/pdb_ldap.c	2006-06-17 02:20:39 UTC (rev 16333)
+++ trunk/source/passdb/pdb_ldap.c	2006-06-17 07:20:47 UTC (rev 16334)
@@ -223,7 +223,10 @@
 	if (mem_ctx == NULL)
 		return NT_STATUS_NO_MEMORY;
 
-	attrs = TALLOC_ARRAY(mem_ctx, const char *, 2);
+	if ((attrs = TALLOC_ARRAY(mem_ctx, const char *, 2)) == NULL) {
+		ntstatus = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	/* if we got a syncrepl-rid (up to three digits long) we speak with a consumer */
 	rid = lp_parm_int(-1, "ldapsam", "syncrepl_rid", -1);
@@ -1748,6 +1751,9 @@
 	result = pdb_get_backend_private_data(newpwd, my_methods);
 	if (!result) {
 		attr_list = get_userattr_list(NULL, ldap_state->schema_ver);
+		if (pdb_get_username(newpwd) == NULL) {
+			return NT_STATUS_INVALID_PARAMETER;
+		}
 		rc = ldapsam_search_suffix_by_name(ldap_state, pdb_get_username(newpwd), &result, attr_list );
 		TALLOC_FREE( attr_list );
 		if (rc != LDAP_SUCCESS) {
@@ -2351,6 +2357,10 @@
 				 LDAP_OBJ_POSIXGROUP,
 				 LDAP_OBJ_GROUPMAP,
 				 sid_string_static(group));
+	if (filter == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	rc = smbldap_search(conn, lp_ldap_group_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, id_attrs, 0,
@@ -2526,6 +2536,10 @@
 	*pp_sids = NULL;
 	num_sids = 0;
 
+	if (pdb_get_username(user) == NULL) {
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
 	escape_name = escape_ldap_string_alloc(pdb_get_username(user));
 	if (escape_name == NULL)
 		return NT_STATUS_NO_MEMORY;
@@ -2535,6 +2549,10 @@
 				 "(&(objectClass=%s)(uid=%s))",
 				 LDAP_OBJ_SAMBASAMACCOUNT,
 				 escape_name);
+	if (filter == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	rc = smbldap_search(conn, lp_ldap_user_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
@@ -2571,6 +2589,10 @@
 	filter = talloc_asprintf(mem_ctx,
 				 "(&(objectClass=%s)(|(memberUid=%s)(gidNumber=%d)))",
 				 LDAP_OBJ_POSIXGROUP, escape_name, primary_gid);
+	if (filter == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
 	rc = smbldap_search(conn, lp_ldap_group_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
@@ -3380,6 +3402,10 @@
 
 	filter = talloc_asprintf(mem_ctx, "%s))", filter);
 
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
 	rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_group_suffix(),
 			    LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
 
@@ -3869,11 +3895,18 @@
 		num += 1;
 	va_end(ap);
 
-	result = TALLOC_ARRAY(mem_ctx, const char *, num+1);
+	if ((result = TALLOC_ARRAY(mem_ctx, const char *, num+1)) == NULL) {
+		return NULL;
+	}
 
 	va_start(ap, mem_ctx);
-	for (i=0; i<num; i++)
-		result[i] = talloc_strdup(mem_ctx, va_arg(ap, const char*));
+	for (i=0; i<num; i++) {
+		result[i] = talloc_strdup(result, va_arg(ap, const char*));
+		if (result[i] == NULL) {
+			talloc_free(result);
+			return NULL;
+		}
+	}
 	va_end(ap);
 
 	result[num] = NULL;
@@ -4800,6 +4833,9 @@
 				 pdb_get_username(sam_acct),
 				 LDAP_OBJ_POSIXACCOUNT,
 				 LDAP_OBJ_SAMBASAMACCOUNT);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
 	if (rc != LDAP_SUCCESS) {
@@ -5015,6 +5051,9 @@
 				 sid_string_static(&group_sid),
 				 LDAP_OBJ_POSIXGROUP,
 				 LDAP_OBJ_GROUPMAP);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
 	if (rc != LDAP_SUCCESS) {
@@ -5126,6 +5165,9 @@
 				 sid_string_static(&member_sid),
 				 LDAP_OBJ_POSIXACCOUNT,
 				 LDAP_OBJ_SAMBASAMACCOUNT);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* get the member uid */
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
@@ -5292,6 +5334,9 @@
 				 pdb_get_username(sampass),
 				 LDAP_OBJ_POSIXACCOUNT,
 				 LDAP_OBJ_SAMBASAMACCOUNT);
+	if (filter == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	rc = smbldap_search_suffix(ldap_state->smbldap_state, filter, NULL, &result);
 	if (rc != LDAP_SUCCESS) {



More information about the samba-cvs mailing list