Module Name:    src
Committed By:   christos
Date:           Sat Jun 21 17:43:04 UTC 2014

Modified Files:
        src/usr.bin/sed: main.c

Log Message:
CID 10006930: Prevent outfile overwrite resource leak.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/usr.bin/sed/main.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/sed/main.c
diff -u src/usr.bin/sed/main.c:1.27 src/usr.bin/sed/main.c:1.28
--- src/usr.bin/sed/main.c:1.27	Wed Jun 18 10:15:50 2014
+++ src/usr.bin/sed/main.c	Sat Jun 21 13:43:04 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.27 2014/06/18 14:15:50 christos Exp $	*/
+/*	$NetBSD: main.c,v 1.28 2014/06/21 17:43:04 christos Exp $	*/
 
 /*-
  * Copyright (c) 2013 Johann 'Myrkraverk' Oskarsson.
@@ -39,7 +39,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: main.c,v 1.27 2014/06/18 14:15:50 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.28 2014/06/21 17:43:04 christos Exp $");
 #ifdef __FBSDID
 __FBSDID("$FreeBSD: head/usr.bin/sed/main.c 252231 2013-06-26 04:14:19Z pfg $");
 #endif
@@ -427,6 +427,8 @@ mf_fgets(SPACE *sp, enum e_spflag spflag
 			if (len >= sizeof(tmpfname))
 				errx(1, "%s: name too long", fname);
 			unlink(tmpfname);
+			if (outfile != NULL && outfile != stdout)
+				flose(outfile);
 			if ((outfile = fopen(tmpfname, "w")) == NULL)
 				err(1, "%s", fname);
 			fchown(fileno(outfile), sb.st_uid, sb.st_gid);

Reply via email to