Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock X-Debbugs-Cc: t...@mirbsd.de, Vincent Lefèvre <vinc...@vinc17.net>
Please unblock package mksh [ Reason ] This update is comprised of: • documentation update from upstream CVS HEAD, mostly related to the death of a certain IRC network (one FAQ entry related to changes that are already in 59c-8 also got in) • some more reliability checks (although I’m afraid the full C1 control character escaping changes won’t make bullseye, they’re still under development and rather invasive, so I only picked the small independent fixes): – check lower bounds of input line array when backspacing – protect against hi-bit7 (stty) EOF character – ensure macro calls don’t have side effects in arguments • properly flush stderr and unwind for direct builtin calls (“ln -s /bin/mksh echo; ./echo …”) so they behave the same as if called from within the shell (“/bin/mksh -c 'echo …'”) • fix truncation behaviour for internal snprintf equivalent (a sequence of putc+puts+putc could, before, drop the puts but allow the putc to succeed); this becomes important with the next change • show error message and exit nōn-zero on stdout write failure for builtin calls (Closes: #990265) ‣ there was quite a discussion around what parts are actually buggy-as-in-not-POSIX on the Austin Group (POSIX) mailing list, as there was no consensus between shell implementors, packagers and users; this implements (for all known cases) what the official response requires • display correct errno when doing so (before, one codepath could lose errno as it did another libc call in between) • show error message in echo/print builtin on output write failure (basically the same as the generic one except echo/print don’t write buffered to stdout, they write to any fd, and already exited 1 on write error but didn’t issue a diagnostic message in that case which the POSIX people seem to prefer) [ Impact ] The references to the dead IRC network stay in. Scenarios in which output is redirected to files on a full filesystem can’t be handled by shell scripts. Direct builtin calls can lose stderr messages. (The other fixes are for bugs I’ve not seen in production but aren’t untrue either.) [ Tests ] The stdout/error change has new tests in the regression test suite and has also been tested by the requestor and the concept was ACK’d on the Austin Group mailing list. All changes have been tested in MirBSD for a while (including rebuilding the full OS with them in play) and not triggered any problems. The changes (except documentation where I cp’d for some files) are all individual cherry-picks of the relevant commits, individually reviewed. I also tested the truncation one by temporarily adding debugging code during development, and all error handling-related ones also on Debian with /dev/full (which doesn’t exist on MirBSD). [ Risks ] As mentioned in the last unblock, mksh is effectively not key. These changes only affect specific things (the ones under “some more reliability checks” only the interactive line editor, for example) and thus are rather localised, mistakes easily spotted. Therefore I believe these are low risk (I specifically didn’t cherry-pick a few fixes that are of higher risk because of their interwovenness and intrusivity level; users will have to wait for the next release for these). I expect this to be the last upload before the release. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach diff against the package in testing [ Other info ] I’ve again attached a diff of the unpacked package instead of a debdiff because I use single-debian-patch and develop in VCS. I’ve commented the diff, so it’s easier to map the hunks to the changes listed. unblock mksh/59c-9