svn commit: samba r19047 - in branches/tmp/vl-messaging/source/lib: .

ab at samba.org ab at samba.org
Mon Oct 2 14:06:04 GMT 2006


Author: ab
Date: 2006-10-02 14:06:04 +0000 (Mon, 02 Oct 2006)
New Revision: 19047

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

Log:
Reformat and simplify code a bit; add some pointer checks. Patch from Aleksey Fedoseev
Modified:
   branches/tmp/vl-messaging/source/lib/dbwrap_msg.c


Changeset:
Modified: branches/tmp/vl-messaging/source/lib/dbwrap_msg.c
===================================================================
--- branches/tmp/vl-messaging/source/lib/dbwrap_msg.c	2006-10-02 13:50:30 UTC (rev 19046)
+++ branches/tmp/vl-messaging/source/lib/dbwrap_msg.c	2006-10-02 14:06:04 UTC (rev 19047)
@@ -458,6 +458,10 @@
 	TDB_DATA buf;
 	static BOOL traverse_msg_reg = False;
 	int count = 0;
+
+	if(fn == NULL) {
+		return -1;
+	}
 	
 	null_data.dsize = 0;
 	null_data.dptr = NULL;
@@ -484,7 +488,7 @@
 	while(ctx->record != NULL) {
 		count++;
 
-		if(fn && fn(ctx->record->key, ctx->record->value, private_data)) {
+		if(fn(ctx->record->key, ctx->record->value, private_data)) {
 			/* break the traversal */
 			TALLOC_FREE(ctx->record);
 			message_deregister(MSG_DB_TRAVERSE);
@@ -1105,6 +1109,8 @@
 			      struct db_entry *database,
 			      struct db_records_list *record)
 {
+	SMB_ASSERT(record && record->key.dptr);
+
 	{
 		char *keystr = hex_encode(NULL, (unsigned char *)record->key.dptr,
 					  record->key.dsize);
@@ -1124,6 +1130,11 @@
 		TALLOC_FREE(li);
 		
 		data = msg_pack_data(NULL, database->idx, record->value);
+
+		if(data.dptr == NULL) {
+			DEBUG(0, ("Can't pack data\n"));
+			return ;
+		}
 		
 		DEBUG(10, ("Sending fetchlock response (len %d) to %s\n",
 			   data.dsize, procid_str_static(&source)));
@@ -1142,6 +1153,8 @@
 static void process_db_delete(struct db_entry *database,
 			      struct db_records_list *record)
 {
+	SMB_ASSERT(record && record->key.dptr);
+
 	{
 		char *keystr = hex_encode(NULL, (unsigned char *)record->key.dptr,
 					  record->key.dsize);
@@ -1196,7 +1209,7 @@
 void process_db_request(struct process_id *lockd_pid,
 			struct process_id *src_pid,
 			int msg_type,
-			char* buffer,
+			char *buffer,
 			size_t len)
 {
     	uint8_t idx;
@@ -1210,78 +1223,79 @@
 	if(msg_type == MSG_DB_INIT) {
 		/* create new database or return opened one */
 		process_db_init(lockd_pid, src_pid, buffer);
+		return;
+	}
+
+	if(msg_type == MSG_DB_STORE) {
+		if(!msg_unpack_double_data(buffer, len, NULL,
+					   &idx, &data1, &data2)) {
+			DEBUG(0, ("Can't unpack data\n"));
+			return ;
+		}
 	} else {
-		if(msg_type == MSG_DB_STORE) {
-			if(!msg_unpack_double_data(buffer, len, NULL,
-						   &idx, &data1, &data2)) {
-				DEBUG(0, ("Can't unpack data\n"));
-				return ;
-			}
-		} else {
-			data2.dsize = 0;
-			data2.dptr = NULL;
+		data2.dsize = 0;
+		data2.dptr = NULL;
+		
+		if(!msg_unpack_data(buffer, len, NULL,
+				    &idx, &data1)) {
+			DEBUG(0, ("Can't unpack data\n"));
+			return ;
+		}
+	}			
+	
+	/* find the database */
+	dbl = find_db_by_index(idx);
+	if(dbl == NULL) {
+		DEBUG(0, ("Bad database index %d\n", idx));
+		TALLOC_FREE(data1.dptr);
+		TALLOC_FREE(data2.dptr);
+		return ;			
+	}
+	
+	if(msg_type == MSG_DB_FREE) {
+		
+		process_db_free(dbl);
+		
+	} else if(msg_type == MSG_DB_REINIT) {
+		
+		process_db_reinit(dbl);
+		
+	} else if(msg_type == MSG_DB_FETCHLOCK) {
+		
+		process_db_fetch(lockd_pid, src_pid, dbl, data1);
+		
+	} else if(msg_type == MSG_DB_TRAVERSE) {
 
-			if(!msg_unpack_data(buffer, len, NULL,
-					    &idx, &data1)) {
-				DEBUG(0, ("Can't unpack data\n"));
-				return ;
-			}
-		}			
+		process_db_traverse(lockd_pid, src_pid, dbl);
 
-		/* find the database */
-		dbl = find_db_by_index(idx);
-		if(dbl == NULL) {
-			DEBUG(0, ("Bad database index %d\n", idx));
+	} else {
+			
+		/* find the record */
+		dbrl = find_record_by_key(dbl, data1);
+		if(dbrl == NULL) {
+			DEBUG(0, ("Can't find the record\n"));
 			TALLOC_FREE(data1.dptr);
 			TALLOC_FREE(data2.dptr);
-			return ;			
+			return ;
 		}
 
-		if(msg_type == MSG_DB_FREE) {
+		if(msg_type == MSG_DB_UNLOCK) {
 
-			process_db_free(dbl);
-
-		} else if(msg_type == MSG_DB_REINIT) {
-
-			process_db_reinit(dbl);
-
-		} else if(msg_type == MSG_DB_FETCHLOCK) {
-
-			process_db_fetch(lockd_pid, src_pid, dbl, data1);
-
-		} else if(msg_type == MSG_DB_TRAVERSE) {
-
-			process_db_traverse(lockd_pid, src_pid, dbl);
-
-		} else {
-			
-			/* find the record */
-			dbrl = find_record_by_key(dbl, data1);
-			if(dbrl == NULL) {
-				DEBUG(0, ("Can't find the record\n"));
-				TALLOC_FREE(data1.dptr);
-				TALLOC_FREE(data2.dptr);
-				return ;
-			}
-
-			if(msg_type == MSG_DB_UNLOCK) {
-
-				process_db_unlock(lockd_pid, dbl, dbrl);
+			process_db_unlock(lockd_pid, dbl, dbrl);
 				
-			} else if(msg_type == MSG_DB_STORE) {
+		} else if(msg_type == MSG_DB_STORE) {
 				
-				process_db_store(dbl, dbrl, data2);
+			process_db_store(dbl, dbrl, data2);
 
-			} else if(msg_type == MSG_DB_DELETE) {
+		} else if(msg_type == MSG_DB_DELETE) {
 
-				process_db_delete(dbl, dbrl);
+			process_db_delete(dbl, dbrl);
 
-			} else {
-				DEBUG(0, ("Bad db message type %d\n", msg_type));
-			}
+		} else {
+			DEBUG(0, ("Bad db message type %d\n", msg_type));
 		}
+	}
 
-		TALLOC_FREE(data1.dptr);
-		TALLOC_FREE(data2.dptr);
-	}
+	TALLOC_FREE(data1.dptr);
+	TALLOC_FREE(data2.dptr);
 }



More information about the samba-cvs mailing list