summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2011-05-27 13:53:36 +0200
committerJim Meyering <meyering@redhat.com>2011-05-27 13:53:36 +0200
commitaff3ed70d47ae8e2da057d00dd3d4ab08b0cf574 (patch)
tree13a9ea5eb7ab9375e64ec1baef809824a9a345ca
parent57eee615897283e0c4560a0849a568b23108926e (diff)
downloadparted-aff3ed70d47ae8e2da057d00dd3d4ab08b0cf574.tar.gz
linux: don't leak a FILE* upon /proc read failure
* libparted/arch/linux.c (_probe_proc_partitions): Call fclose upon failure.
-rw-r--r--libparted/arch/linux.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 6ce6a3f..aeaf98f 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2064,16 +2064,17 @@ _probe_proc_partitions ()
char buf [512];
char part_name [256];
char dev_name [256];
+ int ok = 0;
proc_part_file = fopen ("/proc/partitions", "r");
if (!proc_part_file)
return 0;
if (fgets (buf, 256, proc_part_file) == NULL)
- return 0;
+ goto done;
if (fgets (buf, 256, proc_part_file) == NULL)
- return 0;
+ goto done;
while (fgets (buf, 512, proc_part_file)
&& sscanf (buf, "%d %d %d %255s", &major, &minor, &size,
@@ -2090,8 +2091,10 @@ _probe_proc_partitions ()
_ped_device_probe (dev_name);
}
+ ok = 1;
+ done:
fclose (proc_part_file);
- return 1;
+ return ok;
}
struct _entry {