diff options
| author | Amar Tumballi <amar@gluster.com> | 2010-09-02 01:22:15 +0000 | 
|---|---|---|
| committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-09-02 03:12:28 -0700 | 
| commit | e94814533da94fb936355cde924ef3a6f6c11f46 (patch) | |
| tree | a663d6e70977fb9f6654037403747b2ab9804d1d | |
| parent | 4c5e364c36baa92374eb0eac60dafb8da3786286 (diff) | |
crash fixed in 'gluster volume log locate'
Signed-off-by: Amar Tumballi <amar@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1506 (crash in log locate..)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1506
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 17 | 
1 files changed, 11 insertions, 6 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index fd90161f84c..1c0d1ee6fb6 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -1743,12 +1743,15 @@ glusterd_handle_log_locate (rpcsvc_request_t *req)          gf1_cli_log_locate_req  cli_req = {0,};          gf1_cli_log_locate_rsp  rsp     = {0,};          dict_t                 *dict    = NULL; +        glusterd_conf_t        *priv = NULL;          glusterd_volinfo_t     *volinfo = NULL;          glusterd_brickinfo_t   *brickinfo = NULL; -        char                   *tmp_str = NULL; +        char                    tmp_str[PATH_MAX] = {0,};          GF_ASSERT (req); +        priv    = THIS->private; +          if (!gf_xdr_to_cli_log_locate_req (req->msg[0], &cli_req)) {                  //failed to decode msg;                  req->rpc_err = GARBAGE_ARGS; @@ -1775,8 +1778,13 @@ glusterd_handle_log_locate (rpcsvc_request_t *req)          }          list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { -                tmp_str = gf_strdup (brickinfo->logfile); -                rsp.path = dirname (tmp_str); +                if (brickinfo->logfile) { +                        strcpy (tmp_str, brickinfo->logfile); +                        rsp.path = dirname (tmp_str); +                } else { +                        snprintf (tmp_str, PATH_MAX, "%s/logs/", priv->workdir); +                        rsp.path = tmp_str; +                }                  break;          } @@ -1789,9 +1797,6 @@ out:          ret = glusterd_submit_reply (req, &rsp, NULL, 0, NULL,                                       gf_xdr_serialize_cli_log_locate_rsp); -        if (tmp_str) -                GF_FREE (tmp_str); -          return ret;  }  | 
