From: Dominique Martinet <dominique.marti...@atmark-techno.com> sed would currently not error if write failed when modifying a file.
This can be reproduced with the following 'script': $ sudo mount -t tmpfs tmpfs -o size=1M /tmp/m $ sudo chmod 777 /tmp/m $ echo foo > /tmp/m/foo $ dd if=/dev/zero of=/tmp/m/fill bs=4k dd: error writing '/tmp/m/fill': No space left on device 256+0 records in 255+0 records out 1044480 bytes (1.0 MB, 1020 KiB) copied, 0.00234567 s, 445 MB/s $ busybox sed -i -e 's/.*/bar/' /tmp/m/foo $ echo $? 0 $ cat /tmp/m/foo <empty> new behaviour: $ echo foo > /tmp/m/foo $ ./busybox sed -i -e 's/.*/bar/' /tmp/m/foo sed: write error $ echo $? 4 $ cat /tmp/m/foo foo function old new delta sed_main 754 801 +47 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 47/0) Total: 47 bytes text data bss dec hex filename 66957 2398 1552 70907 114fb busybox_old 67004 2398 1552 70954 1152a busybox_unstripped Signed-off-by: Dominique Martinet <dominique.marti...@atmark-techno.com> --- (Denys, sorry for double-resend -- I didn't understand why I had sent this from my personal address last time but the list blocks non-subscriber mails... resending from this address again...) Not getting any reply to whether I should resend last month, so resending in doubt... FWIW this has been applied on alpine shortly after sending the patch (mid Nov), there hasn't been any problem that I've heard about. editors/sed.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editors/sed.c b/editors/sed.c index 32a4b61f6d4c..be709eef3a9c 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -1639,6 +1639,11 @@ int sed_main(int argc UNUSED_PARAM, char **argv) fchown(nonstdoutfd, statbuf.st_uid, statbuf.st_gid); process_files(); + fflush(G.nonstdout); + if (ferror(G.nonstdout)) { + xfunc_error_retval = 4; /* It's what gnu sed exits with... */ + bb_simple_error_msg_and_die(bb_msg_write_error); + } fclose(G.nonstdout); G.nonstdout = stdout; -- 2.35.1 _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox