Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
http: add test for http transfer encoding smuggling
  • Loading branch information
richardlau committed Dec 23, 2020
1 parent 92d4309 commit 4a30ac8
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions test/parallel/test-http-transfer-encoding-smuggling-legacy.js
@@ -0,0 +1,47 @@
// Flags: --http-parser=legacy
'use strict';

const common = require('../common');

const assert = require('assert');
const http = require('http');
const net = require('net');

const msg = [
'POST / HTTP/1.1',
'Host: 127.0.0.1',
'Transfer-Encoding: chunked',
'Transfer-Encoding: chunked-false',
'Connection: upgrade',
'',
'1',
'A',
'0',
'',
'GET /flag HTTP/1.1',
'Host: 127.0.0.1',
'',
'',
].join('\r\n');

// Verify that the server is called only once even with a smuggled request.

const server = http.createServer(common.mustCall((req, res) => {
res.end();
}, 1));

function send(next) {
const client = net.connect(server.address().port, 'localhost');
client.setEncoding('utf8');
client.on('error', common.mustNotCall());
client.on('end', next);
client.write(msg);
client.resume();
}

server.listen(0, common.mustCall((err) => {
assert.ifError(err);
send(common.mustCall(() => {
server.close();
}));
}));

0 comments on commit 4a30ac8

Please sign in to comment.