summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.9.1-init.patch
blob: be86cbe2f5227acc39bd3fd1214bdbfb89f1c5b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
--- busybox-1.9.1/init/init.c	Tue Feb 12 17:03:12 2008
+++ busybox-1.9.1-init/init/init.c	Mon Mar 17 14:19:41 2008
@@ -225,8 +225,22 @@
 		}
 		messageD(L_LOG, "console='%s'", s);
 	} else {
-		/* Make sure fd 0,1,2 are not closed */
-		bb_sanitize_stdio();
+		/* Make sure fd 0,1,2 are not closed
+		 * (so that they won't be used by future opens) */
+
+		/* bb_sanitize_stdio(); - WRONG.
+		 * Fail if "/dev/null" doesnt exist, and for init
+		 * this is a real possibility! Open code it instead. */
+
+		int fd = open(bb_dev_null, O_RDWR);
+		if (fd < 0) {
+			/* Give me _ANY_ open descriptor! */
+			fd = xopen("/", O_RDONLY); /* we don't believe this can fail */
+		}
+    		while ((unsigned)fd < 2)
+            		fd = dup(fd);
+		if (fd > 2)
+			close (fd);
 	}
 
 	s = getenv("TERM");