From 2e53333247a11b0e1d62ac692830593f0505cd0f Mon Sep 17 00:00:00 2001 From: sttk Date: Thu, 24 Jun 2021 13:13:02 +0900 Subject: [PATCH] test: Add a test case for ReDoS vulnerability --- test/index.test.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/index.test.js b/test/index.test.js index 9cd8eb5..f6b0465 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -4,6 +4,8 @@ var gp = require('../'); var expect = require('expect'); var isWin32 = require('os').platform() === 'win32'; +var performance = require('perf_hooks').performance; + describe('glob-parent', function () { it('should strip glob magic to return parent path', function (done) { expect(gp('.')).toEqual('.'); @@ -224,6 +226,26 @@ describe('glob2base test patterns', function () { done(); }); + + it('should not increase calc. time exponentially by \'/\' count [CVE-2021-35065]', function (done) { + var measure = function(n) { + var input = "{" + "/".repeat(n); + var st = performance.now(); + gp(input); + var ed = performance.now(); + return (ed - st) / (n * n); + }; + + var result0 = measure(5000); + + [10000, 50000, 100000, 150000].forEach(function(n) { + var result1 = measure(n); + expect(result1 / result0).toBeLessThan(0.9); + result0 = result1; + }); + + done(); + }); }); if (isWin32) {