diff options
author | Ruediger Meier | 2014-05-22 09:19:08 +0200 |
---|---|---|
committer | Ruediger Meier | 2014-05-22 09:41:24 +0200 |
commit | 34c265f01c8b189e7de4e73fb7ecb0e63a004c51 (patch) | |
tree | ff0987e52d013187f14e91568883eda290b28f6b /sys-utils/setarch.c | |
parent | build-sys: cleanup bash-completion/ (diff) | |
download | kernel-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>
Diffstat (limited to 'sys-utils/setarch.c')
-rw-r--r-- | sys-utils/setarch.c | 3 |
1 files changed, 3 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"); |