diff options
| author | Igor Ryzhov <iryzhov@nfware.com> | 2021-08-11 12:09:15 +0300 | 
|---|---|---|
| committer | Igor Ryzhov <iryzhov@nfware.com> | 2021-08-11 12:09:15 +0300 | 
| commit | 15bc6a40d3bf86bec574244ce89150a73774dd80 (patch) | |
| tree | 1124f81338f73314824e44fd5ae73e2120ba7c5a /bgpd/bgp_community_alias.c | |
| parent | 854571290b6dd1b3924e8b88ba7425931008fb5a (diff) | |
bgpd: fix memory leaks in bgp_alias2community_str
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'bgpd/bgp_community_alias.c')
| -rw-r--r-- | bgpd/bgp_community_alias.c | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/bgpd/bgp_community_alias.c b/bgpd/bgp_community_alias.c index 5f45e19a3b..793f3ac9ac 100644 --- a/bgpd/bgp_community_alias.c +++ b/bgpd/bgp_community_alias.c @@ -175,22 +175,25 @@ const char *bgp_alias2community(char *alias)   * This is a helper to convert already aliased version   * of communities into numerical-only format.   */ -const char *bgp_alias2community_str(const char *str) +char *bgp_alias2community_str(const char *str)  {  	char **aliases; -	int num; +	char *comstr; +	int num, i;  	frrstr_split(str, " ", &aliases, &num); -	const char *communities[num + 1]; +	const char *communities[num]; -	for (int i = 0; i < num; i++) { -		communities[i] = -			XSTRDUP(MTYPE_TMP, bgp_alias2community(aliases[i])); +	for (i = 0; i < num; i++) +		communities[i] = bgp_alias2community(aliases[i]); + +	comstr = frrstr_join(communities, num, " "); + +	for (i = 0; i < num; i++)  		XFREE(MTYPE_TMP, aliases[i]); -	}  	XFREE(MTYPE_TMP, aliases); -	return frrstr_join(communities, num, " "); +	return comstr;  }  static int bgp_community_alias_vector_walker(struct hash_bucket *bucket,  | 
