From 2d1fa4fdc3302b50f0263604a46e00c7b88ecc24 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 4 Oct 2016 16:08:55 +0200 Subject: sfdisk: cleanup before going out of scope [coverity scan] Signed-off-by: Karel Zak --- disk-utils/sfdisk.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'disk-utils/sfdisk.c') diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index d8d1a8762..52f2a6d92 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -365,13 +365,13 @@ static void backup_partition_table(struct sfdisk *sf, const char *devname) static int move_partition_data(struct sfdisk *sf, size_t partno, struct fdisk_partition *orig_pa) { struct fdisk_partition *pa = get_partition(sf->cxt, partno); - char *devname, *typescript; - FILE *f; + char *devname = NULL, *typescript = NULL, *buf = NULL; + FILE *f = NULL; int ok = 0, fd, backward = 0; fdisk_sector_t nsectors, from, to, step, i; size_t ss, step_bytes, cc; uintmax_t src, dst; - char *buf; + int errsv; assert(sf->movedata); @@ -519,11 +519,18 @@ static int move_partition_data(struct sfdisk *sf, size_t partno, struct fdisk_pa free(buf); free(devname); free(typescript); + return 0; fail: + errsv = -errno; warn(_("%s: failed to move data"), devname); - fclose(f); - return -errno; + if (f) + fclose(f); + free(buf); + free(devname); + free(typescript); + + return errsv; } static int write_changes(struct sfdisk *sf) -- cgit v1.2.3-55-g7522