[PATCH] ldb: Properly handle NULL when copying attr lists.

Andrew Kroeger andrew at id10ts.net
Tue Jun 23 06:58:10 MDT 2009


All:

Please find attached a patch that corrects some NULL dereference cases 
in ldb attribute copying functions.

Sincerely,
Andrew Kroeger
-------------- next part --------------
>From 1a6d651c1ee96ee4a9f21ceb4bff8da6878f4732 Mon Sep 17 00:00:00 2001
From: Andrew Kroeger <andrew at id10ts.net>
Date: Tue, 23 Jun 2009 07:26:17 -0500
Subject: [PATCH] ldb: Properly handle NULL when copying attr lists.

When copying an attribute list, ensure the list itself is not NULL before
attempting to access elements of the list.
---
 source4/lib/ldb/common/ldb_msg.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c
index ad53a3d..8d0fa31 100644
--- a/source4/lib/ldb/common/ldb_msg.c
+++ b/source4/lib/ldb/common/ldb_msg.c
@@ -643,12 +643,12 @@ const char **ldb_attr_list_copy(TALLOC_CTX *mem_ctx, const char * const *attrs)
 {
 	const char **ret;
 	int i;
-	for (i=0;attrs[i];i++) /* noop */ ;
+	for (i=0;attrs && attrs[i];i++) /* noop */ ;
 	ret = talloc_array(mem_ctx, const char *, i+1);
 	if (ret == NULL) {
 		return NULL;
 	}
-	for (i=0;attrs[i];i++) {
+	for (i=0;attrs && attrs[i];i++) {
 		ret[i] = attrs[i];
 	}
 	ret[i] = attrs[i];
@@ -665,7 +665,7 @@ const char **ldb_attr_list_copy_add(TALLOC_CTX *mem_ctx, const char * const *att
 	const char **ret;
 	int i;
 	bool found = false;
-	for (i=0;attrs[i];i++) {
+	for (i=0;attrs && attrs[i];i++) {
 		if (ldb_attr_cmp(attrs[i], new_attr) == 0) {
 			found = true;
 		}
@@ -677,7 +677,7 @@ const char **ldb_attr_list_copy_add(TALLOC_CTX *mem_ctx, const char * const *att
 	if (ret == NULL) {
 		return NULL;
 	}
-	for (i=0;attrs[i];i++) {
+	for (i=0;attrs && attrs[i];i++) {
 		ret[i] = attrs[i];
 	}
 	ret[i] = new_attr;
-- 
1.6.0.6



More information about the samba-technical mailing list