This commit is contained in:
wukunyu264 2026-04-20 11:22:12 +00:00 committed by GitHub
commit eb18f2ec51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 1308 additions and 1254 deletions

View File

@ -0,0 +1,41 @@
/* eslint-env mocha */
const { expect } = require('chai');
const { performance } = require('perf_hooks');
const path = require('path');
// —— 最小浏览器 & jQuery stub避免 DOM 依赖 ——
global.window = global;
global.document = {};
global.jQuery = function(){};
global.$ = global.jQuery;
const target = path.join(
__dirname,
'..',
'examples/wchess/wchess.wasm/chessboardjs-1.0.0/js/chessboard-1.0.0.js'
);
// 载入真实实现(会把 Chessboard 挂到全局)
require(target);
const Chessboard = global.Chessboard;
describe('FEN sanitize ReDoS in whisper.cpp (fen = fen.replace(/ .+$/, \'\'))', function () {
this.timeout(60_000);
it('should complete within 2 seconds', function () {
const N = 100000;
const attack = ' '.repeat(N) + '\n@';
const t0 = performance.now();
try { Chessboard.fenToObj(attack); } catch (_) {}
const ms = performance.now() - t0;
expect(ms).to.be.lessThan(2_000);
});
});

12
js-tests/package.json Normal file
View File

@ -0,0 +1,12 @@
{
"name": "whispercpp-js-tests",
"private": true,
"type": "commonjs",
"scripts": {
"test": "mocha \"*.spec.js\""
},
"devDependencies": {
"mocha": "^10.6.0",
"chai": "^4.4.1"
}
}