+ try {
+ size_t bytesRead = mReader().read(data, length);
+ if (bytesRead != length) { // short read (shouldn't happen)
+ Syslog::error("DevRandomGenerator: wanted %ld got %ld bytes",
+ length, bytesRead);
+ UnixError::throwMe(EIO);
+ }
+ } catch(const UnixError &uerr) {
+ Syslog::error("DevRandomGenerator: error %d reading /dev/random",
+ uerr.error);
+ throw;
+ }