]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
sfdisk: cleanup before going out of scope [coverity scan]
authorKarel Zak <kzak@redhat.com>
Tue, 4 Oct 2016 14:08:55 +0000 (16:08 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 4 Oct 2016 14:08:55 +0000 (16:08 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/sfdisk.c

index d8d1a87622f4430dae7a70bb587d363561828fc0..52f2a6d9262bcc2388579fc57ed4eec0c93e85f4 100644 (file)
@@ -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)