Skip to content
This repository was archived by the owner on Apr 30, 2021. It is now read-only.

Commit 614fefb

Browse files
committed
Add zlib fuzzer
1 parent 3a56a38 commit 614fefb

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

examples/zlib/fuzz.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const pako = require('pako')
2+
3+
async function fuzz (bytes) {
4+
try {
5+
pako.deflate(bytes)
6+
pako.inflate(bytes)
7+
} catch (error) {
8+
if (!acceptable(error)) throw error
9+
}
10+
}
11+
12+
function acceptable (error) {
13+
return (
14+
typeof error === 'string' &&
15+
!!expected.find(message => error.startsWith(message))
16+
)
17+
}
18+
19+
const expected = [
20+
'buffer error',
21+
'incorrect header check',
22+
'unknown compression method',
23+
'invalid window size',
24+
'invalid distance',
25+
'invalid block type',
26+
'invalid code lengths',
27+
'too many length or distance symbols',
28+
'invalid stored block lengths',
29+
'need dictionary',
30+
'incorrect data check',
31+
'invalid literal/length code',
32+
'invalid bit length repeat',
33+
'invalid code'
34+
]
35+
36+
exports.fuzz = fuzz

examples/zlib/package-lock.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/zlib/package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"name": "zlib-fuzz",
3+
"version": "1.0.0",
4+
"main": "fuzz.js",
5+
"license": "ISC",
6+
"dependencies": {
7+
"pako": "^1.0.10"
8+
}
9+
}

0 commit comments

Comments
 (0)