changeset 1782:6f23a328bc48 draft

Glitch in oneit that hit uClibc's pipe() error checking on sparc. (Not that I'm sure that uClibc check is right either, but...)
author Rob Landley <rob@landley.net>
date Sat, 05 Sep 2015 14:26:17 -0500
parents b27851ab2795
children ae16231f0cdc
files sources/patches/toybox-oneit.patch
diffstat 1 files changed, 28 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/patches/toybox-oneit.patch	Sat Sep 05 14:26:17 2015 -0500
@@ -0,0 +1,28 @@
+commit 9592214cc5670605544a083d67ff916c9a802b13
+Author: Rob Landley <rob@landley.net>
+Date:   Sat Sep 5 14:14:09 2015 -0500
+
+    Large thinko, -3 was always enabled in optflags. (Oops.)
+
+diff --git a/toys/other/oneit.c b/toys/other/oneit.c
+index 8e4b713..a3fe024 100644
+--- a/toys/other/oneit.c
++++ b/toys/other/oneit.c
+@@ -61,7 +61,7 @@ void oneit_main(void)
+ {
+   int i, pid, pipes[] = {SIGUSR1, SIGUSR2, SIGTERM, SIGINT};
+ 
+-  if (FLAG_3) {
++  if (toys.optflags & FLAG_3) {
+     // Ensure next available filehandle is #3
+     while (open("/", 0) < 3);
+     close(3);
+@@ -83,7 +83,7 @@ void oneit_main(void)
+       // We ignore the return value of write (what would we do with it?)
+       // but save it in a variable we never read to make fortify shut up.
+       // (Real problem is if pid2 never reads, write() fills pipe and blocks.)
+-      while (pid != wait(&i)) if (FLAG_3) i = write(4, &pid, 4);
++      while (pid != wait(&i)) if (toys.optflags & FLAG_3) i = write(4, &pid, 4);
+       if (toys.optflags & FLAG_n) continue;
+ 
+       oneit_signaled((toys.optflags & FLAG_p) ? SIGUSR2 : SIGTERM);