mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
- Added `scripts/agent/fuzz-utils.mjs` with random input generators. - Added `scripts/agent/fuzz-nostrEventSchemas.mjs` to fuzz event builders and validation. - Added `scripts/agent/fuzz-dmDecryptor.mjs` to fuzz DM decryption logic. - Added `scripts/agent/fuzz-magnetUtils.mjs` to fuzz magnet URI normalization. - Added `scripts/agent/summarize-fuzz.mjs` to aggregate reports. - Generated initial fuzzing reports in `artifacts/`. - Verified that target functions are robust against malformed inputs. Co-authored-by: PR0M3TH3AN <[email protected]>
51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
import {
|
|
randomInt,
|
|
randomBoolean,
|
|
randomString,
|
|
randomHex,
|
|
randomArray,
|
|
randomValue,
|
|
randomObject,
|
|
runFuzzer,
|
|
} from "./fuzz-utils.mjs";
|
|
import {
|
|
normalizeAndAugmentMagnet,
|
|
safeDecodeMagnet,
|
|
extractBtihFromMagnet,
|
|
normalizeInfoHash,
|
|
} from "../../js/magnetUtils.js";
|
|
|
|
function genMagnetString() {
|
|
if (Math.random() < 0.2) return randomString(100); // Garbage
|
|
if (Math.random() < 0.2) return ""; // Empty
|
|
|
|
let magnet = "magnet:?";
|
|
const params = [];
|
|
const count = randomInt(0, 5);
|
|
for (let i = 0; i < count; i++) {
|
|
const key = Math.random() < 0.5 ? (Math.random() < 0.5 ? "xt" : "tr") : randomString(2);
|
|
const value = randomString(20, true);
|
|
params.push(`${key}=${encodeURIComponent(value)}`);
|
|
}
|
|
return magnet + params.join("&");
|
|
}
|
|
|
|
function genOptions() {
|
|
return {
|
|
webSeed: Math.random() < 0.5 ? randomString(20) : [randomString(20), randomString(20)],
|
|
torrentUrl: Math.random() < 0.5 ? randomString(30) : undefined,
|
|
xs: Math.random() < 0.5 ? randomString(30) : undefined,
|
|
extraTrackers: Math.random() < 0.5 ? [randomString(30)] : undefined,
|
|
appProtocol: Math.random() < 0.5 ? "http:" : "https:",
|
|
};
|
|
}
|
|
|
|
async function main() {
|
|
await runFuzzer("safeDecodeMagnet", safeDecodeMagnet, () => [genMagnetString()]);
|
|
await runFuzzer("extractBtihFromMagnet", extractBtihFromMagnet, () => [genMagnetString()]);
|
|
await runFuzzer("normalizeInfoHash", normalizeInfoHash, () => [randomString(40)]);
|
|
await runFuzzer("normalizeAndAugmentMagnet", normalizeAndAugmentMagnet, () => [genMagnetString(), genOptions()]);
|
|
}
|
|
|
|
main().catch(console.error);
|