From 34c265f01c8b189e7de4e73fb7ecb0e63a004c51 Mon Sep 17 00:00:00 2001 From: Ruediger Meier Date: Thu, 22 May 2014 09:19:08 +0200 Subject: setarch: flush output streams before exec This fixes the following (non-deterministic) discrepancy: $ setarch x86_64 -RFZLvXBIST3 --uname-2.6 echo success Switching on READ_IMPLIES_EXEC. Switching on ADDR_LIMIT_32BIT. Switching on SHORT_INODE. Switching on WHOLE_SECONDS. Switching on STICKY_TIMEOUTS. Switching on ADDR_LIMIT_3GB. Switching on UNAME26. success $ setarch x86_64 -RFZLvXBIST3 --uname-2.6 echo success &> /tmp/bla; cat /tmp/bla success Signed-off-by: Ruediger Meier --- sys-utils/setarch.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'sys-utils/setarch.c') diff --git a/sys-utils/setarch.c b/sys-utils/setarch.c index 957bb2b03..f957c7975 100644 --- a/sys-utils/setarch.c +++ b/sys-utils/setarch.c @@ -356,6 +356,9 @@ int main(int argc, char *argv[]) if (set_arch(p, options, 0)) err(EXIT_FAILURE, _("Failed to set personality to %s"), p); + /* flush all output streams before exec */ + fflush(NULL); + if (!argc) { execl("/bin/sh", "-sh", NULL); err(EXIT_FAILURE, _("failed to execute %s"), "/bin/sh"); -- cgit v1.2.3-55-g7522