From d78693d3cb98cfd212c05b327f4a02014f56294b Mon Sep 17 00:00:00 2001 From: Anton Drukh Date: Fri, 24 Mar 2017 07:48:26 +0000 Subject: [PATCH] fix: use random string when failing to get MAC address for signature We use a local MAC address to randomise sha1 to sign the message. In case MAC address is unreadable (CI env, for example), we defaulted to a random number, causing a crash in crypto. Using `Math.random` is probably as random as `uuid`, but `crypto.createHash('sha1').update(mac)` requires a Buffer or a String, and not a number. --- lib/analytics.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/analytics.js b/lib/analytics.js index 23421ff68c..e1f56a7030 100644 --- a/lib/analytics.js +++ b/lib/analytics.js @@ -12,6 +12,7 @@ var os = require('os'); var osName = require('os-name'); var interfaces = os.networkInterfaces() || os.getNetworkInterfaces(); var crypto = require('crypto'); +var uuid = require('uuid'); var metadata = {}; @@ -48,7 +49,7 @@ function postAnalytics(data) { data.os = osName(os.platform(), os.release()); data.nodeVersion = process.version; - var mac = getMAC() || Math.random(); // ¯\_(ツ)_/¯ + var mac = getMAC() || uuid.v4(); var shasum = crypto.createHash('sha1'); data.id = shasum.update(mac).digest('hex');