65 lines
1.9 KiB
Diff
65 lines
1.9 KiB
Diff
|
Index: mozilla/security/nss/lib/freebl/unix_rand.c
|
||
|
===================================================================
|
||
|
RCS file: /cvsroot/mozilla/security/nss/lib/freebl/unix_rand.c,v
|
||
|
retrieving revision 1.25
|
||
|
retrieving revision 1.28
|
||
|
diff -u -r1.25 -r1.28
|
||
|
--- mozilla/security/nss/lib/freebl/unix_rand.c 25 Jul 2007 22:54:35 -0000 1.25
|
||
|
+++ mozilla/security/nss/lib/freebl/unix_rand.c 3 Dec 2007 21:07:01 -0000 1.28
|
||
|
@@ -866,7 +866,8 @@
|
||
|
/* if the child hasn't exited, kill it -- we're done with its output */
|
||
|
while ((rv = waitpid(pid, &status, WNOHANG)) == -1 && errno == EINTR)
|
||
|
;
|
||
|
- if (rv == 0 && kill(pid, SIGKILL) == 0) {
|
||
|
+ if (rv == 0) {
|
||
|
+ kill(pid, SIGKILL);
|
||
|
while ((rv = waitpid(pid, &status, 0)) == -1 && errno == EINTR)
|
||
|
;
|
||
|
}
|
||
|
@@ -921,15 +922,6 @@
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
-#ifdef DO_PS
|
||
|
-For now it is considered that it is too expensive to run the ps command
|
||
|
-for the small amount of entropy it provides.
|
||
|
-#if defined(__sun) && (!defined(__svr4) && !defined(SVR4)) || defined(bsdi) || defined(LINUX)
|
||
|
- static char ps_cmd[] = "ps aux";
|
||
|
-#else
|
||
|
- static char ps_cmd[] = "ps -el";
|
||
|
-#endif
|
||
|
-#endif /* DO_PS */
|
||
|
#if defined(BSDI)
|
||
|
static char netstat_ni_cmd[] = "netstat -nis";
|
||
|
#else
|
||
|
@@ -980,9 +972,12 @@
|
||
|
* in a pthreads environment. Therefore, we call safe_popen last and on
|
||
|
* BSD/OS we do not call safe_popen when we succeeded in getting data
|
||
|
* from /dev/urandom.
|
||
|
+ *
|
||
|
+ * Bug 174993: LINUX provides /dev/urandom, don't fork netstat
|
||
|
+ * if data has been gathered successfully
|
||
|
*/
|
||
|
|
||
|
-#ifdef BSDI
|
||
|
+#if defined(BSDI) || defined(LINUX)
|
||
|
if (bytes)
|
||
|
return;
|
||
|
#endif
|
||
|
@@ -1010,15 +1005,6 @@
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
-#ifdef DO_PS
|
||
|
- fp = safe_popen(ps_cmd);
|
||
|
- if (fp != NULL) {
|
||
|
- while ((bytes = fread(buf, 1, sizeof(buf), fp)) > 0)
|
||
|
- RNG_RandomUpdate(buf, bytes);
|
||
|
- safe_pclose(fp);
|
||
|
- }
|
||
|
-#endif
|
||
|
-
|
||
|
#ifdef DO_NETSTAT
|
||
|
fp = safe_popen(netstat_ni_cmd);
|
||
|
if (fp != NULL) {
|