From cd738711782d5860eeab4e7cefdd1f72dfb83810 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Sun, 5 Oct 2014 02:44:34 +0200
Subject: [PATCH] sed: fix "sed CMD -i nonexistent_file". Closes 7484

function                                             old     new   delta
sed_main                                             643     676     +33

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 editors/sed.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/editors/sed.c b/editors/sed.c
index e1b8352fd..2c64ad500 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -1522,12 +1522,16 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
 
 			/* -i: process each FILE separately: */
 
+			if (stat(*argv, &statbuf) != 0) {
+				bb_simple_perror_msg(*argv);
+				G.exitcode = EXIT_FAILURE;
+				G.current_input_file++;
+				continue;
+			}
 			G.outname = xasprintf("%sXXXXXX", *argv);
 			nonstdoutfd = xmkstemp(G.outname);
 			G.nonstdout = xfdopen_for_write(nonstdoutfd);
-
 			/* Set permissions/owner of output file */
-			stat(*argv, &statbuf);
 			/* chmod'ing AFTER chown would preserve suid/sgid bits,
 			 * but GNU sed 4.2.1 does not preserve them either */
 			fchmod(nonstdoutfd, statbuf.st_mode);