summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd
diff options
context:
space:
mode:
authorBala.FA <barumuga@redhat.com>2013-11-21 17:16:39 +0530
committerAnand Avati <avati@redhat.com>2013-11-26 11:55:46 -0800
commit8690388bc7b3fe92c5dfc43a7173d5f05137e9cd (patch)
tree0d182238797f022512b5260cc58e341778015676 /xlators/mgmt/glusterd
parent7f62ee2432d850f9fa519ddce9f58f9288ceee29 (diff)
cli: use proper copy to set node-name
Previously node-name is set to point to node-uuid which could cause memory leak. This is fixed by having memory copy of node-uuid. BUG: 1012296 Change-Id: I3b638ec289d5b167c6e752ef1ba41f41efacb9da Signed-off-by: Bala.FA <barumuga@redhat.com> Reviewed-on: http://review.gluster.org/6330 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index 501be66f826..e9437057aa2 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -3291,6 +3291,12 @@ glusterd_op_modify_op_ctx (glusterd_op_t op, void *ctx)
snprintf (key, sizeof (key),
"brick%d.peerid", i);
uuid = gf_strdup (uuid_str);
+ if (!uuid) {
+ gf_log (this->name, GF_LOG_DEBUG,
+ "unable to create dup of"
+ " uuid_str");
+ continue;
+ }
ret = dict_set_dynstr (op_ctx, key,
uuid);
if (ret != 0) {
@@ -3346,6 +3352,7 @@ glusterd_op_modify_op_ctx (glusterd_op_t op, void *ctx)
{
char key[1024];
char *uuid_str = NULL;
+ char *uuid = NULL;
int i;
for (i = 1; i <= count; i++) {
@@ -3356,8 +3363,18 @@ glusterd_op_modify_op_ctx (glusterd_op_t op, void *ctx)
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key),
"node-name-%d", i);
- ret = dict_set_str (op_ctx, key,
- uuid_str);
+ uuid = gf_strdup (uuid_str);
+ if (!uuid) {
+ gf_log (this->name, GF_LOG_DEBUG,
+ "unable to create dup of"
+ " uuid_str");
+ continue;
+ }
+ ret = dict_set_dynstr (op_ctx, key,
+ uuid);
+ if (ret != 0) {
+ GF_FREE (uuid);
+ }
}
}
}