Author: ab Date: 2006-07-01 07:38:26 +0000 (Sat, 01 Jul 2006) New Revision: 16723
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16723 Log: Remove talloc_steal() usage from vl-messaging code before merging with the trunk. Patch from Aleksey Fedoseev Modified: branches/tmp/vl-messaging/source/lib/dbwrap_file.c branches/tmp/vl-messaging/source/lib/dbwrap_msg.c Changeset: Modified: branches/tmp/vl-messaging/source/lib/dbwrap_file.c =================================================================== --- branches/tmp/vl-messaging/source/lib/dbwrap_file.c 2006-07-01 02:15:52 UTC (rev 16722) +++ branches/tmp/vl-messaging/source/lib/dbwrap_file.c 2006-07-01 07:38:26 UTC (rev 16723) @@ -314,7 +314,13 @@ } data.dsize = rec->value.dsize; - data.dptr = talloc_steal(mem_ctx, rec->value.dptr); + data.dptr = talloc_memdup(mem_ctx, rec->value.dptr, rec->value.dsize); + if(data.dptr == NULL) { + DEBUG(0, ("talloc failed\n")); + TALLOC_FREE(rec); + TALLOC_FREE(mem_ctx); + return -1; + } TALLOC_FREE(rec); count += 1; Modified: branches/tmp/vl-messaging/source/lib/dbwrap_msg.c =================================================================== --- branches/tmp/vl-messaging/source/lib/dbwrap_msg.c 2006-07-01 02:15:52 UTC (rev 16722) +++ branches/tmp/vl-messaging/source/lib/dbwrap_msg.c 2006-07-01 07:38:26 UTC (rev 16723) @@ -310,27 +310,42 @@ wait_for_return(ctx); - if(ctx->record) { - ctx->record->key.dsize = key.dsize; - ctx->record->key.dptr = talloc_memdup(ctx->record, key.dptr, key.dsize); - if(ctx->record->key.dptr == NULL) { - DEBUG(0, ("talloc failed\n")); - TALLOC_FREE(ctx->record); - return NULL; - } - } else { + if(!ctx->record) { DEBUG(0, ("db record is NULL\n")); return NULL; } - - result = talloc_steal(mem_ctx, ctx->record); + + result = TALLOC_P(mem_ctx, struct db_record); if(result == NULL) { - DEBUG(0, ("talloc_steal failed\n")); + DEBUG(0, ("talloc failed\n")); TALLOC_FREE(ctx->record); return NULL; } + + result->key.dsize = key.dsize; + result->key.dptr = talloc_memdup(result, key.dptr, key.dsize); + if(result->key.dptr == NULL) { + DEBUG(0, ("talloc failed\n")); + TALLOC_FREE(ctx->record); + TALLOC_FREE(result); + return NULL; + } + + result->value.dsize = ctx->record->value.dsize; + result->value.dptr = talloc_memdup(result, ctx->record->value.dptr, + ctx->record->value.dsize); + if(result->value.dptr == NULL) { + DEBUG(0, ("talloc failed\n")); + TALLOC_FREE(ctx->record); + TALLOC_FREE(result); + return NULL; + } + + result->store = db_msg_store; + result->delete_rec = db_msg_delete; + result->private_data = ctx; - ctx->record = NULL; + TALLOC_FREE(ctx->record); return result; } @@ -467,13 +482,14 @@ if(value.dsize > 0) { result->value.dsize = value.dsize; - result->value.dptr = talloc_steal(result, value.dptr); + result->value.dptr = talloc_memdup(result, value.dptr, value.dsize); if (result->value.dptr == NULL) { - DEBUG(0, ("talloc_steal failed\n")); + DEBUG(0, ("talloc failed\n")); TALLOC_FREE(value.dptr); TALLOC_FREE(result); return ; } + TALLOC_FREE(value.dptr); } result->store = db_msg_store; result->delete_rec = db_msg_delete;
