metrics: fix memory leak on allocation failure
authorCiara Power <ciara.power@intel.com>
Thu, 17 Sep 2020 15:03:41 +0000 (16:03 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Tue, 3 Nov 2020 21:45:24 +0000 (22:45 +0100)
If an error occurred when allocating memory for metrics or names,
the function returned without freeing allocated memory. This is now
fixed to avoid the resource leak in the case that either metrics or
names had been successfully allocated memory.

Coverity issue: 362053
Fixes: c5b7197f662e ("telemetry: move some functions to metrics library")
Cc: stable@dpdk.org
Reported-by: Gaurav Singh <gaurav1086@gmail.com>
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
lib/librte_metrics/rte_metrics_telemetry.c

index b97152a..901cbeb 100644 (file)
@@ -170,7 +170,8 @@ rte_metrics_tel_format_port(uint32_t pid, json_t *ports,
        names = malloc(sizeof(struct rte_metric_name) * num_metrics);
        if (metrics == NULL || names == NULL) {
                METRICS_LOG_ERR("Cannot allocate memory");
-               return -ENOMEM;
+               ret = -ENOMEM;
+               goto fail;
        }
 
        if (rte_metrics_get_names(names, num_metrics) != num_metrics ||