[klibc] [PATCH 2/2] utils: dd close fds on error pathes

maximilian attems max at stro.at
Wed Nov 10 07:07:49 PST 2010


fix several ressource leakages.

Signed-off-by: maximilian attems <max at stro.at>
---
 usr/utils/dd.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/usr/utils/dd.c b/usr/utils/dd.c
index 562e2cf..706b8c3 100644
--- a/usr/utils/dd.c
+++ b/usr/utils/dd.c
@@ -486,6 +486,7 @@ int main(int argc, char *argv[])
 		wr_fd = open(OPT_OF->str, flags, 0666);
 		if (wr_fd == -1) {
 			perror("open output file");
+			close(rd_fd);
 			return 1;
 		}
 	}
@@ -493,14 +494,20 @@ int main(int argc, char *argv[])
 	/*
 	 * Skip obs-sized blocks of output file.
 	 */
-	if (OPT_SEEK->str && skip_blocks(wr_fd, out_buf, seek, obs))
+	if (OPT_SEEK->str && skip_blocks(wr_fd, out_buf, seek, obs)) {
+		close(rd_fd);
+		close(wr_fd);
 		return 1;
+	}
 
 	/*
 	 * Skip ibs-sized blocks of input file.
 	 */
-	if (OPT_SKIP->str && skip_blocks(rd_fd, in_buf, skip, ibs))
+	if (OPT_SKIP->str && skip_blocks(rd_fd, in_buf, skip, ibs)) {
+		close(rd_fd);
+		close(wr_fd);
 		return 1;
+	}
 
 	memset(&stats, 0, sizeof(stats));
 
-- 
1.7.2.3



More information about the klibc mailing list