summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuediger Meier2014-05-22 09:19:08 +0200
committerRuediger Meier2014-05-22 09:41:24 +0200
commit34c265f01c8b189e7de4e73fb7ecb0e63a004c51 (patch)
treeff0987e52d013187f14e91568883eda290b28f6b
parentbuild-sys: cleanup bash-completion/ (diff)
downloadkernel-qcow2-util-linux-34c265f01c8b189e7de4e73fb7ecb0e63a004c51.tar.gz
kernel-qcow2-util-linux-34c265f01c8b189e7de4e73fb7ecb0e63a004c51.tar.xz
kernel-qcow2-util-linux-34c265f01c8b189e7de4e73fb7ecb0e63a004c51.zip
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 <ruediger.meier@ga-group.nl>
-rw-r--r--sys-utils/setarch.c3
-rw-r--r--tests/expected/misc/setarch11
2 files changed, 14 insertions, 0 deletions
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");
diff --git a/tests/expected/misc/setarch b/tests/expected/misc/setarch
index 2e9ba477f..54208acf6 100644
--- a/tests/expected/misc/setarch
+++ b/tests/expected/misc/setarch
@@ -1 +1,12 @@
+Switching on ADDR_NO_RANDOMIZE.
+Switching on FDPIC_FUNCPTRS.
+Switching on MMAP_PAGE_ZERO.
+Switching on ADDR_COMPAT_LAYOUT.
+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