]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
setarch: flush output streams before exec
authorRuediger Meier <ruediger.meier@ga-group.nl>
Thu, 22 May 2014 07:19:08 +0000 (09:19 +0200)
committerRuediger Meier <ruediger.meier@ga-group.nl>
Thu, 22 May 2014 07:41:24 +0000 (09:41 +0200)
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>
sys-utils/setarch.c
tests/expected/misc/setarch

index 957bb2b0308acbb3f4b8f515593aedccebc3ac1f..f957c7975870e110526b5f39dbcfa4f95ac4acc5 100644 (file)
@@ -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");
index 2e9ba477f89e86c5bbc86c0516283f59d8f6e178..54208acf65dcf900f644d370885ee7a08854ab82 100644 (file)
@@ -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