diff options
author | Jim Meyering <meyering@redhat.com> | 2011-05-27 13:53:36 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2011-05-27 13:53:36 +0200 |
commit | aff3ed70d47ae8e2da057d00dd3d4ab08b0cf574 (patch) | |
tree | 13a9ea5eb7ab9375e64ec1baef809824a9a345ca | |
parent | 57eee615897283e0c4560a0849a568b23108926e (diff) | |
download | parted-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.c | 9 |
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 { |