net: fix abort on bad address input

PR-URL: https://github.com/nodejs/node/pull/13726
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Ruben Bridgewater 2017-06-16 15:47:48 -04:00 коммит произвёл Refael Ackermann
Родитель 22cf25cf2d
Коммит f40caf7282
2 изменённых файлов: 27 добавлений и 10 удалений

Просмотреть файл

@ -42,6 +42,7 @@ const WriteWrap = process.binding('stream_wrap').WriteWrap;
const async_id_symbol = process.binding('async_wrap').async_id_symbol;
const { newUid, setInitTriggerId } = require('async_hooks');
const nextTick = require('internal/process/next_tick').nextTick;
const errors = require('internal/errors');
var cluster;
var dns;
@ -964,8 +965,9 @@ Socket.prototype.connect = function() {
this._sockname = null;
}
var pipe = !!options.path;
debug('pipe', pipe, options.path);
const path = options.path;
var pipe = !!path;
debug('pipe', pipe, path);
if (!this._handle) {
this._handle = pipe ? new Pipe() : new TCP();
@ -982,7 +984,13 @@ Socket.prototype.connect = function() {
this.writable = true;
if (pipe) {
internalConnect(this, options.path);
if (typeof path !== 'string') {
throw new errors.TypeError('ERR_INVALID_ARG_TYPE',
'options.path',
'string',
path);
}
internalConnect(this, path);
} else {
lookupAndConnect(this, options);
}

Просмотреть файл

@ -2,12 +2,21 @@
const common = require('../common');
const net = require('net');
const assert = require('assert');
const fp = '/tmp/fadagagsdfgsdf';
const c = net.connect(fp);
c.on('connect', common.mustNotCall());
{
const fp = '/tmp/fadagagsdfgsdf';
const c = net.connect(fp);
c.on('error', common.mustCall(function(e) {
assert.strictEqual(e.code, 'ENOENT');
assert.strictEqual(e.message, `connect ENOENT ${fp}`);
}));
c.on('connect', common.mustNotCall());
c.on('error', common.expectsError({
code: 'ENOENT',
message: `connect ENOENT ${fp}`
}));
}
{
assert.throws(
() => net.createConnection({ path: {} }),
common.expectsError({ code: 'ERR_INVALID_ARG_TYPE' })
);
}