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