From 9cbee018775439d4296d9281698fdae56649b974 Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Mon, 12 Jul 2021 17:01:40 +1000 Subject: Additional pointer checks in dynamic meter code for Coverity --- pcp/PCPDynamicMeter.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'pcp') diff --git a/pcp/PCPDynamicMeter.c b/pcp/PCPDynamicMeter.c index ac69d5a7..2291167f 100644 --- a/pcp/PCPDynamicMeter.c +++ b/pcp/PCPDynamicMeter.c @@ -194,13 +194,15 @@ static void PCPDynamicMeter_parseFile(PCPDynamicMeters* meters, const char* path meter = PCPDynamicMeter_new(meters, key+1); } else if (!ok) { ; /* skip this one, we're looking for a new header */ - } else if (value && String_eq(key, "caption")) { + } else if (value && meter && String_eq(key, "caption")) { char* caption = String_cat(value, ": "); - free_and_xStrdup(&meter->super.caption, caption); - free(caption); - } else if (value && String_eq(key, "description")) { + if (caption) { + free_and_xStrdup(&meter->super.caption, caption); + free(caption); + } + } else if (value && meter && String_eq(key, "description")) { free_and_xStrdup(&meter->super.description, value); - } else if (value && String_eq(key, "type")) { + } else if (value && meter && String_eq(key, "type")) { if (String_eq(config[1], "bar")) meter->super.type = BAR_METERMODE; else if (String_eq(config[1], "text")) @@ -209,9 +211,9 @@ static void PCPDynamicMeter_parseFile(PCPDynamicMeters* meters, const char* path meter->super.type = GRAPH_METERMODE; else if (String_eq(config[1], "led")) meter->super.type = LED_METERMODE; - } else if (value && String_eq(key, "maximum")) { + } else if (value && meter && String_eq(key, "maximum")) { meter->super.maximum = strtod(value, NULL); - } else if (value) { + } else if (value && meter) { PCPDynamicMeter_parseMetric(meters, meter, path, lineno, key, value); } String_freeArray(config); -- cgit v1.2.3