summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2016-08-05 13:25:25 +1000
committerMartin Schwenke <martins@samba.org>2016-08-08 08:17:33 +0200
commitc9750c821e06364cb4559f857c359c14e6799303 (patch)
treec6c45c65a3a079935a7205195af1010d62560a76 /ctdb
parent2e5e51ebcd3ec8283cdd9c9d13dbe1fc836f8a3d (diff)
downloadsamba-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')
-rw-r--r--ctdb/tools/ctdb.c6
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;
}