From: Denys Vlasenko Date: Sun, 5 Oct 2014 00:44:34 +0000 (+0200) Subject: sed: fix "sed CMD -i nonexistent_file". Closes 7484 X-Git-Tag: 1_23_0~33 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=cd738711782d5860eeab4e7cefdd1f72dfb83810;p=oweals%2Fbusybox.git sed: fix "sed CMD -i nonexistent_file". Closes 7484 function old new delta sed_main 643 676 +33 Signed-off-by: Denys Vlasenko --- 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);