From 2d603d55a8160aa40f0a442574f1fc8dedc9a034 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 6 Feb 2019 10:41:58 -0800 Subject: [PATCH] tc: fix memory leak in error path If value passed to parse_percent was not valid, it would leak the dynamic allocation from sscanf. Fixes: 927e3cfb52b5 ("tc: B.W limits can now be specified in %.") Signed-off-by: Stephen Hemminger --- tc/tc_util.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tc/tc_util.c b/tc/tc_util.c index ab717890..1377b536 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -195,7 +195,7 @@ static int parse_percent_rate(char *rate, const char *str, const char *dev) long dev_mbit; int ret; double perc, rate_mbit; - char *str_perc; + char *str_perc = NULL; if (!dev[0]) { fprintf(stderr, "No device specified; specify device to rate limit by percentage\n"); @@ -230,6 +230,7 @@ static int parse_percent_rate(char *rate, const char *str, const char *dev) return 0; malf: + free(str_perc); fprintf(stderr, "Specified rate value could not be read or is malformed\n"); return -1; } -- 2.39.2