diff --git a/CHANGELOG.md b/CHANGELOG.md index 607a09c..0777810 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ For major (breaking) changes - version 3 and 2 see end of page. | Version | Date | Comment | | -------------- | -------------- | -------- | +| 4.30.4 | 2020-11-25 | reverted Object.freeze because it broke some projects | | 4.30.3 | 2020-11-25 | security update (prototype pollution prevention) Object.freeze | | 4.30.2 | 2020-11-25 | security update (prototype pollution prevention) | | 4.30.1 | 2020-11-12 | updated docs | diff --git a/docs/history.html b/docs/history.html index a263315..77e7c0d 100644 --- a/docs/history.html +++ b/docs/history.html @@ -83,6 +83,11 @@ + + 4.30.4 + 2020-11-25 + reverted Object.freeze because it broke some projects + 4.30.3 2020-11-25 diff --git a/docs/index.html b/docs/index.html index 6e90312..085bb83 100644 --- a/docs/index.html +++ b/docs/index.html @@ -168,7 +168,7 @@
systeminformation
-
Current Version: 4.30.3
+
Current Version: 4.30.4
diff --git a/lib/index.js b/lib/index.js index a44025f..d23ed9e 100755 --- a/lib/index.js +++ b/lib/index.js @@ -21,8 +21,8 @@ // Dependencies // ---------------------------------------------------------------------------------- -Object.freeze(String.prototype); -Object.freeze(Object.prototype); +// Object.freeze(String.prototype); +// Object.freeze(Object.prototype); const lib_version = require('../package.json').version; const util = require('./util'); diff --git a/lib/internet.js b/lib/internet.js index 15a5309..f6f7fc5 100644 --- a/lib/internet.js +++ b/lib/internet.js @@ -52,52 +52,57 @@ function inetChecksite(url, callback) { status: 404, ms: -1 }; - if (urlSanitized && !util.isPrototypePolluted()) { - let t = Date.now(); - if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) { - let args = ' -I --connect-timeout 5 -m 5 ' + urlSanitized + ' 2>/dev/null | head -n 1 | cut -d " " -f2'; - let cmd = 'curl'; - exec(cmd + args, function (error, stdout) { - let statusCode = parseInt(stdout.toString()); - result.status = statusCode || 404; - result.ok = !error && (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); - result.ms = (result.ok ? Date.now() - t : -1); - if (callback) { callback(result); } - resolve(result); - }); - } - if (_windows) { // if this is stable, this can be used for all OS types - const http = (urlSanitized.startsWith('https:') ? require('https') : require('http')); - try { - http.get(urlSanitized, (res) => { - const statusCode = res.statusCode; - + try { + if (urlSanitized && !util.isPrototypePolluted()) { + let t = Date.now(); + if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) { + let args = ' -I --connect-timeout 5 -m 5 ' + urlSanitized + ' 2>/dev/null | head -n 1 | cut -d " " -f2'; + let cmd = 'curl'; + exec(cmd + args, function (error, stdout) { + let statusCode = parseInt(stdout.toString()); result.status = statusCode || 404; - result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); - - if (statusCode !== 200) { - res.resume(); - result.ms = (result.ok ? Date.now() - t : -1); - if (callback) { callback(result); } - resolve(result); - } else { - res.on('data', () => { }); - res.on('end', () => { - result.ms = (result.ok ? Date.now() - t : -1); - if (callback) { callback(result); } - resolve(result); - }); - } - }).on('error', () => { + result.ok = !error && (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); + result.ms = (result.ok ? Date.now() - t : -1); if (callback) { callback(result); } resolve(result); }); - } catch (err) { - if (callback) { callback(result); } - resolve(result); } + if (_windows) { // if this is stable, this can be used for all OS types + const http = (urlSanitized.startsWith('https:') ? require('https') : require('http')); + try { + http.get(urlSanitized, (res) => { + const statusCode = res.statusCode; + + result.status = statusCode || 404; + result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); + + if (statusCode !== 200) { + res.resume(); + result.ms = (result.ok ? Date.now() - t : -1); + if (callback) { callback(result); } + resolve(result); + } else { + res.on('data', () => { }); + res.on('end', () => { + result.ms = (result.ok ? Date.now() - t : -1); + if (callback) { callback(result); } + resolve(result); + }); + } + }).on('error', () => { + if (callback) { callback(result); } + resolve(result); + }); + } catch (err) { + if (callback) { callback(result); } + resolve(result); + } + } + } else { + if (callback) { callback(result); } + resolve(result); } - } else { + } catch (err) { if (callback) { callback(result); } resolve(result); } diff --git a/lib/util.js b/lib/util.js index facf1ec..877627e 100644 --- a/lib/util.js +++ b/lib/util.js @@ -527,7 +527,6 @@ function isPrototypePolluted() { const ms = Date.now(); if (typeof ms === 'number' && ms > 1600000000000) { const l = ms % 100 + 15; - let c = 0; for (let i = 0; i < l; i++) { const r = Math.random() * 61.99999999 + 1; const rs = parseInt(Math.floor(r).toString(), 10) @@ -563,7 +562,7 @@ function isPrototypePolluted() { notPolluted = notPolluted && (stl.length === l) && stl[l - 1] && !(stl[l]) for (let i = 0; i < l; i++) { const s1 = st[i]; - const s2 = stl[i]; + const s2 = stl ? stl[i] : ''; const s1l = s1.toLowerCase(); notPolluted = notPolluted && s1l[0] === s2 && s1l[0] && !(s1l[1]); }