summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2016-08-05 13:25:25 +1000
committerStefan Metzmacher <metze@samba.org>2016-08-10 11:24:37 +0200
commit661f90110924358e95cba3a35dd6c0a974bc3c26 (patch)
treee85c8fdec0c20cac81b2cc84376f3dce687f0563
parentcab7216de287ee9d708f1790976912dc287543e2 (diff)
downloadsamba-661f90110924358e95cba3a35dd6c0a974bc3c26.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> (cherry picked from commit c9750c821e06364cb4559f857c359c14e6799303)
-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 40a9aab89d3..50a8564a568 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;
}