iPXE uses currticks() (along with the MAC address(es) of any network devices) to seed the (non-cryptographic) random number generator. The current implementation of linux_currticks() ensures that the first call to currticks() will always return zero; this results in identical random number sequences on each run of iPXE on a given machine. This can cause odd-looking behaviour due to e.g. the reuse of local TCP port numbers. Fix by effectively rounding down the start time recorded by linux_currticks() to the nearest whole second; this makes it unlikely that consecutive runs of iPXE will use the exact same RNG sequence. (Note that none of this affects the cryptographic RNG, which uses /dev/random as a source of entropy.) Signed-off-by: Michael Brown <mcb30@ipxe.org>tags/v1.20.1
|
|
||
| 55 |
|
55 |
|
| 56 |
|
56 |
|
| 57 |
|
57 |
|
|
58 |
|
|
|
59 |
|
|
|
60 |
|
|
|
61 |
|
|
|
62 |
|
|
|
63 |
|
|
| 58 |
|
64 |
|
| 59 |
|
65 |
|
| 60 |
|
66 |
|
|
|
||
| 71 |
|
77 |
|
| 72 |
|
78 |
|
| 73 |
|
79 |
|
| 74 |
|
|
|
|
80 |
|
|
| 75 |
|
81 |
|
| 76 |
|
82 |
|
| 77 |
|
83 |
|