[Ocfs2-tools-devel] [PATCH] ocfs2_hb_ctl: Fix memory leak problems in main

Joseph Qi joseph.qi at huawei.com
Fri May 27 22:49:32 PDT 2016


On 2016/5/28 12:44, piaojun wrote:
> In main, hbo.dev_str, hbo.service and hbo.uuid_str should be freed after
> use.
> 
> Signed-off-by: Jun Piao <piaojun at huawei.com>

Thanks, Jun.
Reviewed-by: Joseph Qi <joseph.qi at huawei.com>

> ---
>  ocfs2_hb_ctl/ocfs2_hb_ctl.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/ocfs2_hb_ctl/ocfs2_hb_ctl.c b/ocfs2_hb_ctl/ocfs2_hb_ctl.c
> index e4daa92..4a9ffbf 100644
> --- a/ocfs2_hb_ctl/ocfs2_hb_ctl.c
> +++ b/ocfs2_hb_ctl/ocfs2_hb_ctl.c
> @@ -171,13 +171,13 @@ out:
>  	return err;
>  }
>  
> -static errcode_t get_uuid(char *dev, char *uuid)
> +static errcode_t get_uuid(char *dev, char **uuid)
>  {
>  	errcode_t ret;
>  
>  	ret = get_desc(dev);
>  	if (!ret) 
> -		strcpy(uuid, region_desc->r_name);
> +		*uuid = strdup(region_desc->r_name);
>  
>  	return ret;
>  }
> @@ -543,7 +543,7 @@ int main(int argc, char **argv)
>  	struct hb_ctl_options hbo = {
>  		.action = HB_ACTION_UNKNOWN,
>  	};
> -	char hbuuid[33];
> +	char *hbuuid = NULL;
>  
>  	setbuf(stdout, NULL);
>  	setbuf(stderr, NULL);
> @@ -577,7 +577,7 @@ int main(int argc, char **argv)
>  	}
>  
>  	if (!hbo.uuid_str) {
> -		err = get_uuid(hbo.dev_str, hbuuid);
> +		err = get_uuid(hbo.dev_str, &hbuuid);
>  		if (err) {
>  			com_err(progname, err, "while reading uuid");
>  			ret = -EINVAL;
> @@ -631,6 +631,9 @@ int main(int argc, char **argv)
>  	block_signals(SIG_UNBLOCK);
>  
>  bail:
> +	ocfs2_free(&hbo.dev_str);
> +	ocfs2_free(&hbo.service);
> +	ocfs2_free(&hbo.uuid_str);
>  	free_desc();
>  	return ret ? 1 : 0;
>  }
> 





More information about the Ocfs2-tools-devel mailing list