Skip to content

Commit d8548e3

Browse files
committed
Merge branch 'master' of https://github.com/hapijs/subtext
2 parents 93a0bc8 + 8ec84a5 commit d8548e3

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

lib/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ internals.Parser.prototype.multipart = function (source, contentType) {
293293
const clientTimeout = this.settings.timeout;
294294
let clientTimeoutId = null;
295295

296-
const dispenser = new Pez.Dispenser(contentType);
296+
const dispenserOptions = Hoek.applyToDefaults(contentType, { maxBytes: this.settings.maxBytes });
297+
const dispenser = new Pez.Dispenser(dispenserOptions);
297298

298299
const onError = (err) => {
299300

test/index.js

+42
Original file line numberDiff line numberDiff line change
@@ -1361,4 +1361,46 @@ describe('parse()', () => {
13611361
done();
13621362
});
13631363
});
1364+
1365+
it('errors if the payload size exceeds the byte limit', (done) => {
1366+
1367+
const payload =
1368+
'--AaB03x\r\n' +
1369+
'content-disposition: form-data; name="x"\r\n' +
1370+
'\r\n' +
1371+
'First\r\n' +
1372+
'--AaB03x\r\n' +
1373+
'content-disposition: form-data; name="x"\r\n' +
1374+
'\r\n' +
1375+
'Second\r\n' +
1376+
'--AaB03x\r\n' +
1377+
'content-disposition: form-data; name="x"\r\n' +
1378+
'\r\n' +
1379+
'Third\r\n' +
1380+
'--AaB03x\r\n' +
1381+
'content-disposition: form-data; name="field1"\r\n' +
1382+
'\r\n' +
1383+
'Joe Blow\r\nalmost tricked you!\r\n' +
1384+
'--AaB03x\r\n' +
1385+
'content-disposition: form-data; name="field1"\r\n' +
1386+
'\r\n' +
1387+
'Repeated name segment\r\n' +
1388+
'--AaB03x\r\n' +
1389+
'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n' +
1390+
'Content-Type: text/plain\r\n' +
1391+
'\r\n' +
1392+
'... contents of file1.txt ...\r\r\n' +
1393+
'--AaB03x--\r\n';
1394+
1395+
const request = Wreck.toReadableStream(payload);
1396+
request.headers = {
1397+
'content-type': 'multipart/form-data; boundary=AaB03x'
1398+
};
1399+
1400+
Subtext.parse(request, null, { parse: true, output: 'stream', maxBytes: 10 }, (err, parsed) => {
1401+
1402+
expect(err).to.exist();
1403+
done();
1404+
});
1405+
});
13641406
});

0 commit comments

Comments
 (0)