From: Volker Lendecke Date: Sun, 3 Dec 2017 19:47:02 +0000 (+0100) Subject: lib: Make g_lock_dump use TDB_DATA X-Git-Tag: tevent-0.9.36~187 X-Git-Url: http://git.samba.org/samba.git/?p=nivanova%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=67fcc7dbb9ad63886c594b1f563b6c1d2060cbd1 lib: Make g_lock_dump use TDB_DATA Signed-off-by: Volker Lendecke Reviewed-by: Ralph Boehme --- diff --git a/source3/include/g_lock.h b/source3/include/g_lock.h index dcdb8eee73a..a0d8c251dfd 100644 --- a/source3/include/g_lock.h +++ b/source3/include/g_lock.h @@ -58,7 +58,7 @@ NTSTATUS g_lock_do(TDB_DATA key, enum g_lock_type lock_type, int g_lock_locks(struct g_lock_ctx *ctx, int (*fn)(const char *name, void *private_data), void *private_data); -NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, const char *name, +NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, TDB_DATA key, void (*fn)(const struct g_lock_rec *locks, size_t num_locks, const uint8_t *data, diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c index 8b634e8bf64..3988cec2e3c 100644 --- a/source3/lib/g_lock.c +++ b/source3/lib/g_lock.c @@ -662,7 +662,7 @@ int g_lock_locks(struct g_lock_ctx *ctx, struct g_lock_dump_state { TALLOC_CTX *mem_ctx; - const char *name; + TDB_DATA key; void (*fn)(const struct g_lock_rec *locks, size_t num_locks, const uint8_t *data, @@ -684,7 +684,9 @@ static void g_lock_dump_fn(TDB_DATA key, TDB_DATA data, ok = g_lock_parse(data.dptr, data.dsize, &lck); if (!ok) { DBG_DEBUG("g_lock_parse failed for %s\n", - state->name); + hex_encode_talloc(talloc_tos(), + state->key.dptr, + state->key.dsize)); state->status = NT_STATUS_INTERNAL_DB_CORRUPTION; return; } @@ -708,7 +710,7 @@ static void g_lock_dump_fn(TDB_DATA key, TDB_DATA data, state->status = NT_STATUS_OK; } -NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, const char *name, +NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, TDB_DATA key, void (*fn)(const struct g_lock_rec *locks, size_t num_locks, const uint8_t *data, @@ -717,13 +719,12 @@ NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, const char *name, void *private_data) { struct g_lock_dump_state state = { - .mem_ctx = ctx, .name = name, + .mem_ctx = ctx, .key = key, .fn = fn, .private_data = private_data }; NTSTATUS status; - status = dbwrap_parse_record(ctx->db, string_term_tdb_data(name), - g_lock_dump_fn, &state); + status = dbwrap_parse_record(ctx->db, key, g_lock_dump_fn, &state); if (!NT_STATUS_IS_OK(status)) { DBG_DEBUG("dbwrap_parse_record returned %s\n", nt_errstr(status)); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index df92bd4f356..99baf9d519d 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1491,7 +1491,8 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg, state = (struct smbd_claim_version_state) { .mem_ctx = ctx }; - status = g_lock_dump(ctx, name, smbd_claim_version_parser, &state); + status = g_lock_dump(ctx, string_term_tdb_data(name), + smbd_claim_version_parser, &state); if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { DBG_ERR("Could not read samba_version_string\n"); diff --git a/source3/torture/test_g_lock.c b/source3/torture/test_g_lock.c index 5e12167cdb5..43e699fb173 100644 --- a/source3/torture/test_g_lock.c +++ b/source3/torture/test_g_lock.c @@ -179,7 +179,8 @@ bool run_g_lock2(int dummy) goto fail; } - status = g_lock_dump(ctx, lockname, lock2_parser, &state); + status = g_lock_dump(ctx, string_term_tdb_data(lockname), + lock2_parser, &state); if (!NT_STATUS_IS_OK(status)) { fprintf(stderr, "g_lock_dump failed: %s\n", nt_errstr(status)); @@ -283,7 +284,8 @@ bool run_g_lock3(int dummy) state.lock_type = G_LOCK_READ; state.ok = false; - status = g_lock_dump(ctx, lockname, lock3_parser, &state); + status = g_lock_dump(ctx, string_term_tdb_data(lockname), + lock3_parser, &state); if (!NT_STATUS_EQUAL(status, NT_STATUS_OK)) { fprintf(stderr, "g_lock_dump returned %s\n", nt_errstr(status)); @@ -304,7 +306,8 @@ bool run_g_lock3(int dummy) state.lock_type = G_LOCK_WRITE; state.ok = false; - status = g_lock_dump(ctx, lockname, lock3_parser, &state); + status = g_lock_dump(ctx, string_term_tdb_data(lockname), + lock3_parser, &state); if (!NT_STATUS_EQUAL(status, NT_STATUS_OK)) { fprintf(stderr, "g_lock_dump returned %s\n", nt_errstr(status)); @@ -537,7 +540,8 @@ bool run_g_lock4(int dummy) .me = messaging_server_id(msg) }; - status = g_lock_dump(ctx, lockname, lock4_check, &state); + status = g_lock_dump(ctx, string_term_tdb_data(lockname), + lock4_check, &state); if (!NT_STATUS_IS_OK(status)) { fprintf(stderr, "g_lock_dump failed: %s\n", nt_errstr(status)); @@ -669,7 +673,8 @@ bool run_g_lock5(int dummy) for (i=0; i