From 638789fdf486930a91f0b14b4461dd4efc7263c3 Mon Sep 17 00:00:00 2001 From: Marek Schimara Date: Thu, 16 Jun 2016 13:55:39 +0200 Subject: [PATCH] src/rrd_fetch.c: fix Coverity CID#26524 Resource leak CWE-404 / https://cwe.mitre.org/data/definitions/404.html --- src/rrd_fetch.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c index 23515c02..0256af8e 100644 --- a/src/rrd_fetch.c +++ b/src/rrd_fetch.c @@ -101,12 +101,14 @@ int rrd_fetch( case 's': if ((parsetime_error = rrd_parsetime(options.optarg, &start_tv))) { rrd_set_error("start time: %s", parsetime_error); + if (opt_daemon) free(opt_daemon); return -1; } break; case 'e': if ((parsetime_error = rrd_parsetime(options.optarg, &end_tv))) { rrd_set_error("end time: %s", parsetime_error); + if (opt_daemon) free(opt_daemon); return -1; } break; @@ -116,6 +118,7 @@ int rrd_fetch( case 'r': if ((parsetime_error = rrd_scaled_duration(options.optarg, 1, &step_tmp))) { rrd_set_error("resolution: %s", parsetime_error); + if (opt_daemon) free(opt_daemon); return -1; } break; @@ -133,17 +136,20 @@ int rrd_fetch( case '?': rrd_set_error("%s", options.errmsg); + if (opt_daemon) free(opt_daemon); return -1; } } if (rrd_proc_start_end(&start_tv, &end_tv, &start_tmp, &end_tmp) == -1) { + if (opt_daemon) free(opt_daemon); return -1; } if (start_tmp < 3600 * 24 * 365 * 10) { rrd_set_error("the first entry to fetch should be after 1980"); + if (opt_daemon) free(opt_daemon); return (-1); } @@ -156,6 +162,7 @@ int rrd_fetch( if (end_tmp < start_tmp) { rrd_set_error("start (%ld) should be less than end (%ld)", start_tmp, end_tmp); + if (opt_daemon) free(opt_daemon); return (-1); } @@ -165,6 +172,7 @@ int rrd_fetch( if (options.optind + 1 >= options.argc) { rrd_set_error("Usage: rrdtool %s [options]", options.argv[0]); + if (opt_daemon) free(opt_daemon); return -1; } @@ -179,6 +187,7 @@ int rrd_fetch( status = rrd_fetch_r(options.argv[options.optind], cf, start, end, step, ds_cnt, ds_namv, data); + if (opt_daemon) free(opt_daemon); if (status != 0) return (-1); return (0); -- 2.47.2