]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
prevent loosing entropy when (re)seeding the PRNG
authorLothar Waßmann <LW@KARO-electronics.de>
Mon, 15 Jul 2013 09:40:52 +0000 (11:40 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Mon, 15 Jul 2013 09:40:52 +0000 (11:40 +0200)
net/eth.c
net/net_rand.h
tools/gen_eth_addr.c

index 321d5b18fd842d3d5df52549b2647ab8fb9ef816..dec742ab8f1970fb3cff14f7fe70a8d0098cebfc 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -84,7 +84,7 @@ void eth_random_enetaddr(uchar *enetaddr)
 {
        uint32_t rval;
 
-       srand(get_timer(0));
+       srand(rand() ^ get_timer(0));
 
        rval = rand();
        enetaddr[0] = rval & 0xff;
index ba9d0642cf231ab2ed14c162f2c7fb975f315574..6724b3c13090380d27ffea622ed8cf83df46903e 100644 (file)
@@ -37,7 +37,7 @@ static inline unsigned int seed_mac(void)
  */
 static inline void srand_mac(void)
 {
-       srand(seed_mac());
+       srand(rand() ^ seed_mac());
 }
 
 #endif /* __NET_RAND_H__ */
index 429b20d335f5679cd2aec85ed9305219ee72fd59..dc220bb664203fd6201810a7b77b9f1b86c2213a 100644 (file)
@@ -31,7 +31,7 @@ main(int argc, char *argv[])
 {
     unsigned long ethaddr_low, ethaddr_high;
 
-    srand(time(0) | getpid());
+    srand(rand() ^ time(0) ^ getpid());
 
     /*
      * setting the 2nd LSB in the most significant byte of