summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian C. Lane <bcl@redhat.com>2021-06-11 13:43:02 -0700
committerBrian C. Lane <bcl@redhat.com>2021-06-11 13:47:36 -0700
commit16751493376db612abcceae5ae81fd798c0a4d18 (patch)
tree62049f950fd49c190428903698b12c57e28c13dc
parent86594612f8ae4dbc416e3cd1bc8bb05445df09e5 (diff)
downloadparted-16751493376db612abcceae5ae81fd798c0a4d18.tar.gz
libparted: Fix potential memory leak in gpt_write
_generate_header() can return with 1 after allocating gpt so it needs to be freed in the error path.
-rw-r--r--libparted/labels/gpt.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
index 93f7add..9b987c1 100644
--- a/libparted/labels/gpt.c
+++ b/libparted/labels/gpt.c
@@ -1292,8 +1292,10 @@ gpt_write (const PedDisk *disk)
/* Write PTH and PTEs */
/* FIXME: Caution: this code is nearly identical to what's just below. */
- if (_generate_header (disk, 0, ptes_crc, &gpt) != 0)
- goto error_free_ptes;
+ if (_generate_header (disk, 0, ptes_crc, &gpt) != 0) {
+ pth_free(gpt);
+ goto error_free_ptes;
+ }
pth_raw = pth_get_raw (disk->dev, gpt);
pth_free (gpt);
if (pth_raw == NULL)
@@ -1307,8 +1309,10 @@ gpt_write (const PedDisk *disk)
/* Write Alternate PTH & PTEs */
/* FIXME: Caution: this code is nearly identical to what's just above. */
- if (_generate_header (disk, 1, ptes_crc, &gpt) != 0)
- goto error_free_ptes;
+ if (_generate_header (disk, 1, ptes_crc, &gpt) != 0) {
+ pth_free(gpt);
+ goto error_free_ptes;
+ }
pth_raw = pth_get_raw (disk->dev, gpt);
pth_free (gpt);
if (pth_raw == NULL)