diff options
author | Amitay Isaacs <amitay@gmail.com> | 2016-08-05 13:25:25 +1000 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2016-08-08 08:17:33 +0200 |
commit | c9750c821e06364cb4559f857c359c14e6799303 (patch) | |
tree | c6c45c65a3a079935a7205195af1010d62560a76 /ctdb/tools | |
parent | 2e5e51ebcd3ec8283cdd9c9d13dbe1fc836f8a3d (diff) | |
download | samba-c9750c821e06364cb4559f857c359c14e6799303.tar.gz |
ctdb-tools: Close tdb database on error
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12121
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/tools')
-rw-r--r-- | ctdb/tools/ctdb.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c index 5ed4e59d2e6..eca98d1a31d 100644 --- a/ctdb/tools/ctdb.c +++ b/ctdb/tools/ctdb.c @@ -5442,17 +5442,20 @@ static int control_tfetch(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb, ret = str_to_data(argv[1], strlen(argv[1]), mem_ctx, &key); if (ret != 0) { fprintf(stderr, "Failed to parse key %s\n", argv[1]); + tdb_close(tdb); return ret; } data = tdb_fetch(tdb, key); if (data.dptr == NULL) { fprintf(stderr, "No record for key %s\n", argv[1]); + tdb_close(tdb); return 1; } if (data.dsize < sizeof(struct ctdb_ltdb_header)) { fprintf(stderr, "Invalid record for key %s\n", argv[1]); + tdb_close(tdb); return 1; } @@ -5514,12 +5517,14 @@ static int control_tstore(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb, ret = str_to_data(argv[1], strlen(argv[1]), mem_ctx, &key); if (ret != 0) { fprintf(stderr, "Failed to parse key %s\n", argv[1]); + tdb_close(tdb); return ret; } ret = str_to_data(argv[2], strlen(argv[2]), mem_ctx, &value); if (ret != 0) { fprintf(stderr, "Failed to parse value %s\n", argv[2]); + tdb_close(tdb); return ret; } @@ -5540,6 +5545,7 @@ static int control_tstore(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb, data.dptr = talloc_size(mem_ctx, data.dsize); if (data.dptr == NULL) { fprintf(stderr, "Memory allocation error\n"); + tdb_close(tdb); return 1; } |