diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-tierd-svc-helper.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-tierd-svc-helper.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-tierd-svc-helper.c b/xlators/mgmt/glusterd/src/glusterd-tierd-svc-helper.c index 8b54ac10594..b8e373e7e83 100644 --- a/xlators/mgmt/glusterd/src/glusterd-tierd-svc-helper.c +++ b/xlators/mgmt/glusterd/src/glusterd-tierd-svc-helper.c @@ -89,7 +89,7 @@ glusterd_svc_check_tier_volfile_identical (char *svc_name, gf_boolean_t *identical) { char orgvol[PATH_MAX] = {0,}; - char tmpvol[PATH_MAX] = {0,}; + char *tmpvol = NULL; xlator_t *this = NULL; int ret = -1; int need_unlink = 0; @@ -103,7 +103,10 @@ glusterd_svc_check_tier_volfile_identical (char *svc_name, glusterd_svc_build_tierd_volfile_path (volinfo, orgvol, sizeof (orgvol)); - snprintf (tmpvol, sizeof (tmpvol), "/tmp/g%s-XXXXXX", svc_name); + ret = gf_asprintf(&tmpvol, "/tmp/g%s-XXXXXX", svc_name); + if (ret < 0) { + goto out; + } /* coverity[secure_temp] mkstemp uses 0600 as the mode and is safe */ tmp_fd = mkstemp (tmpvol); @@ -111,6 +114,7 @@ glusterd_svc_check_tier_volfile_identical (char *svc_name, gf_msg (this->name, GF_LOG_WARNING, errno, GD_MSG_FILE_OP_FAILED, "Unable to create temp file" " %s:(%s)", tmpvol, strerror (errno)); + ret = -1; goto out; } @@ -128,6 +132,9 @@ out: if (need_unlink) sys_unlink (tmpvol); + if (tmpvol != NULL) + GF_FREE(tmpvol); + if (tmp_fd >= 0) sys_close (tmp_fd); @@ -140,7 +147,7 @@ glusterd_svc_check_tier_topology_identical (char *svc_name, gf_boolean_t *identical) { char orgvol[PATH_MAX] = {0,}; - char tmpvol[PATH_MAX] = {0,}; + char *tmpvol = NULL; glusterd_conf_t *conf = NULL; xlator_t *this = THIS; int ret = -1; @@ -157,7 +164,10 @@ glusterd_svc_check_tier_topology_identical (char *svc_name, glusterd_svc_build_tierd_volfile_path (volinfo, orgvol, sizeof (orgvol)); - snprintf (tmpvol, sizeof (tmpvol), "/tmp/g%s-XXXXXX", svc_name); + ret = gf_asprintf(&tmpvol, "/tmp/g%s-XXXXXX", svc_name); + if (ret < 0) { + goto out; + } /* coverity[secure_temp] mkstemp uses 0600 as the mode and is safe */ tmpfd = mkstemp (tmpvol); @@ -165,6 +175,7 @@ glusterd_svc_check_tier_topology_identical (char *svc_name, gf_msg (this->name, GF_LOG_WARNING, errno, GD_MSG_FILE_OP_FAILED, "Unable to create temp file" " %s:(%s)", tmpvol, strerror (errno)); + ret = -1; goto out; } @@ -181,5 +192,7 @@ out: sys_close (tmpfd); if (tmpclean) sys_unlink (tmpvol); + if (tmpvol != NULL) + GF_FREE(tmpvol); return ret; } |