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>
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");
+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