Changeset: be0531861da1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/be0531861da1
Modified Files:
common/utils/msabaoth.c
Branch: Jan2022
Log Message:
Implemented fallback using /dev/urandom for systems without getentropy or
rand_s.
I.e. Debian 9.
diffs (45 lines):
diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -612,14 +612,26 @@ msab_pickSecret(char **generated_secret)
}
}
#else
- (void)bin_secret;
- if (generated_secret)
- // do not return an error, just continue without a secret
- *generated_secret = NULL;
- free(secret);
- return NULL;
+ int rfd = open("/dev/urandom", O_RDONLY);
+ if (rfd >= 0) {
+ ssize_t nr;
+ for (size_t n = 0; n < sizeof(bin_secret); n += nr) {
+ nr = read(rfd, bin_secret + n, sizeof(bin_secret) - n);
+ if (nr < 0) {
+ free(secret);
+ return strdup("reading /dev/urandom failed");
+ }
+ }
+ close(rfd);
+ } else {
+ (void)bin_secret;
+ if (generated_secret)
+ // do not return an error, just continue without a
secret
+ *generated_secret = NULL;
+ free(secret);
+ return NULL;
+ }
#endif
-#if defined(HAVE_GETENTROPY) || defined(HAVE_RAND_S)
int fd;
FILE *f;
for (size_t i = 0; i < sizeof(bin_secret); i++) {
@@ -659,7 +671,6 @@ msab_pickSecret(char **generated_secret)
else
free(secret);
return NULL;
-#endif
}
/**
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]