1
0
Fork 0
mirror of https://github.com/Ylianst/MeshCentral.git synced 2025-03-09 15:40:18 +00:00

Fixed random bias.

This commit is contained in:
Ylian Saint-Hilaire 2021-02-08 18:23:29 -08:00
parent f7300b8b5b
commit 956fdd8ca8
2 changed files with 10 additions and 3 deletions

View file

@ -95,8 +95,14 @@ module.exports.data2blob = function (data) {
return blob;
};
// Generate random numbers
module.exports.random = function (max) { (require('crypto').randomBytes(4).readUInt32BE(0) % max); };
// Generate random numbers between 0 and max without bias.
module.exports.random = function (max) {
const crypto = require('crypto');
var maxmask = 1, r;
while (maxmask < max) { maxmask = (maxmask << 1) + 1; }
do { r = (crypto.randomBytes(4).readUInt32BE(0) & maxmask); } while (r > max);
return r;
};
// Split a comma seperated string, ignoring commas in quotes.
module.exports.quoteSplit = function (str) {