Browse Source

Merge topic 'reduce-entropy-consumption'

f23f18ab cmSystemTools: Avoid excess entropy consumption by RandomSeed (#15976)
b13a74b3 cmSystemTools: Remove unused include <fcntl.h>
Brad King 9 years ago
parent
commit
39a80a1feb
1 changed files with 5 additions and 4 deletions
  1. 5 4
      Source/cmSystemTools.cxx

+ 5 - 4
Source/cmSystemTools.cxx

@@ -60,8 +60,7 @@
 #endif
 
 #if defined(CMAKE_BUILD_WITH_CMAKE)
-#  include <fcntl.h>
-#  include "cmCryptoHash.h"
+# include "cmCryptoHash.h"
 #endif
 
 #if defined(CMAKE_USE_ELF_PARSER)
@@ -2184,8 +2183,10 @@ unsigned int cmSystemTools::RandomSeed()
   } seed;
 
   // Try using a real random source.
-  cmsys::ifstream fin("/dev/urandom");
-  if(fin && fin.read(seed.bytes, sizeof(seed)) &&
+  cmsys::ifstream fin;
+  fin.rdbuf()->pubsetbuf(0, 0); // Unbuffered read.
+  fin.open("/dev/urandom");
+  if(fin.good() && fin.read(seed.bytes, sizeof(seed)) &&
      fin.gcount() == sizeof(seed))
     {
     return seed.integer;