| OLD | NEW |
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
| 2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 | 4 |
| 5 #include <stdio.h> | 5 #include <stdio.h> |
| 6 #include <string.h> | 6 #include <string.h> |
| 7 #include <signal.h> | 7 #include <signal.h> |
| 8 #include <unistd.h> | 8 #include <unistd.h> |
| 9 #include <limits.h> | 9 #include <limits.h> |
| 10 #include <errno.h> | 10 #include <errno.h> |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 RNG_RandomUpdate(&si, sizeof(si)); | 186 RNG_RandomUpdate(&si, sizeof(si)); |
| 187 | 187 |
| 188 si = sysconf(_SC_OPEN_MAX); | 188 si = sysconf(_SC_OPEN_MAX); |
| 189 RNG_RandomUpdate(&si, sizeof(si)); | 189 RNG_RandomUpdate(&si, sizeof(si)); |
| 190 } | 190 } |
| 191 #endif | 191 #endif |
| 192 | 192 |
| 193 #if defined(__sun) | 193 #if defined(__sun) |
| 194 #if defined(__svr4) || defined(SVR4) | 194 #if defined(__svr4) || defined(SVR4) |
| 195 #include <sys/systeminfo.h> | 195 #include <sys/systeminfo.h> |
| 196 #include <sys/times.h> | |
| 197 #include <wait.h> | |
| 198 | |
| 199 int gettimeofday(struct timeval *); | |
| 200 int gethostname(char *, int); | |
| 201 | 196 |
| 202 #define getdtablesize() sysconf(_SC_OPEN_MAX) | 197 #define getdtablesize() sysconf(_SC_OPEN_MAX) |
| 203 | 198 |
| 204 static void | 199 static void |
| 205 GiveSystemInfo(void) | 200 GiveSystemInfo(void) |
| 206 { | 201 { |
| 207 int rv; | 202 int rv; |
| 208 char buf[2000]; | 203 char buf[2000]; |
| 209 | 204 |
| 210 rv = sysinfo(SI_MACHINE, buf, sizeof(buf)); | 205 rv = sysinfo(SI_MACHINE, buf, sizeof(buf)); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 | 351 |
| 357 static size_t | 352 static size_t |
| 358 GetHighResClock(void *buf, size_t maxbytes) | 353 GetHighResClock(void *buf, size_t maxbytes) |
| 359 { | 354 { |
| 360 return 0; | 355 return 0; |
| 361 } | 356 } |
| 362 | 357 |
| 363 static void | 358 static void |
| 364 GiveSystemInfo(void) | 359 GiveSystemInfo(void) |
| 365 { | 360 { |
| 361 #ifndef NO_SYSINFO |
| 366 struct sysinfo si; | 362 struct sysinfo si; |
| 367 if (sysinfo(&si) == 0) { | 363 if (sysinfo(&si) == 0) { |
| 368 RNG_RandomUpdate(&si, sizeof(si)); | 364 RNG_RandomUpdate(&si, sizeof(si)); |
| 369 } | 365 } |
| 366 #endif |
| 370 } | 367 } |
| 371 #endif /* LINUX */ | 368 #endif /* LINUX */ |
| 372 | 369 |
| 373 #if defined(NCR) | 370 #if defined(NCR) |
| 374 | 371 |
| 375 #include <sys/utsname.h> | 372 #include <sys/utsname.h> |
| 376 #include <sys/systeminfo.h> | 373 #include <sys/systeminfo.h> |
| 377 | 374 |
| 378 #define getdtablesize() sysconf(_SC_OPEN_MAX) | 375 #define getdtablesize() sysconf(_SC_OPEN_MAX) |
| 379 | 376 |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 | 662 |
| 666 size_t RNG_GetNoise(void *buf, size_t maxbytes) | 663 size_t RNG_GetNoise(void *buf, size_t maxbytes) |
| 667 { | 664 { |
| 668 struct timeval tv; | 665 struct timeval tv; |
| 669 int n = 0; | 666 int n = 0; |
| 670 int c; | 667 int c; |
| 671 | 668 |
| 672 n = GetHighResClock(buf, maxbytes); | 669 n = GetHighResClock(buf, maxbytes); |
| 673 maxbytes -= n; | 670 maxbytes -= n; |
| 674 | 671 |
| 675 #if defined(__sun) && (defined(_svr4) || defined(SVR4)) || defined(sony) | |
| 676 (void)gettimeofday(&tv); | |
| 677 #else | |
| 678 (void)gettimeofday(&tv, 0); | 672 (void)gettimeofday(&tv, 0); |
| 679 #endif | |
| 680 c = CopyLowBits((char*)buf+n, maxbytes, &tv.tv_usec, sizeof(tv.tv_usec)); | 673 c = CopyLowBits((char*)buf+n, maxbytes, &tv.tv_usec, sizeof(tv.tv_usec)); |
| 681 n += c; | 674 n += c; |
| 682 maxbytes -= c; | 675 maxbytes -= c; |
| 683 c = CopyLowBits((char*)buf+n, maxbytes, &tv.tv_sec, sizeof(tv.tv_sec)); | 676 c = CopyLowBits((char*)buf+n, maxbytes, &tv.tv_sec, sizeof(tv.tv_sec)); |
| 684 n += c; | 677 n += c; |
| 685 return n; | 678 return n; |
| 686 } | 679 } |
| 687 | 680 |
| 688 #define SAFE_POPEN_MAXARGS 10 /* must be at least 2 */ | 681 #define SAFE_POPEN_MAXARGS 10 /* must be at least 2 */ |
| 689 | 682 |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 fileBytes += bytes; | 1142 fileBytes += bytes; |
| 1150 buffer += bytes; | 1143 buffer += bytes; |
| 1151 } | 1144 } |
| 1152 fclose(file); | 1145 fclose(file); |
| 1153 if (fileBytes != maxLen) { | 1146 if (fileBytes != maxLen) { |
| 1154 PORT_SetError(SEC_ERROR_NEED_RANDOM); /* system RNG failed */ | 1147 PORT_SetError(SEC_ERROR_NEED_RANDOM); /* system RNG failed */ |
| 1155 fileBytes = 0; | 1148 fileBytes = 0; |
| 1156 } | 1149 } |
| 1157 return fileBytes; | 1150 return fileBytes; |
| 1158 } | 1151 } |
| OLD | NEW |