From f4d123b09e7c2ec90e72b46a66011ceac5505a79 Mon Sep 17 00:00:00 2001 From: Christopher Young Date: Wed, 12 Aug 2020 07:22:34 -0700 Subject: [PATCH] Prevents bad ssl credentials from causing a crash Fixes: https://github.com/brianc/node-postgres/issues/2307 Fixes: https://github.com/brianc/node-postgres/issues/2004 --- packages/pg/lib/connection.js | 6 ++++- .../test/integration/gh-issues/2307-tests.js | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/pg/test/integration/gh-issues/2307-tests.js diff --git a/packages/pg/lib/connection.js b/packages/pg/lib/connection.js index 1487dce8..6bc0952e 100644 --- a/packages/pg/lib/connection.js +++ b/packages/pg/lib/connection.js @@ -85,7 +85,11 @@ class Connection extends EventEmitter { if (net.isIP(host) === 0) { options.servername = host } - self.stream = tls.connect(options) + try { + self.stream = tls.connect(options) + } catch (err) { + return self.emit('error', err) + } self.attachListeners(self.stream) self.stream.on('error', reportStreamError) diff --git a/packages/pg/test/integration/gh-issues/2307-tests.js b/packages/pg/test/integration/gh-issues/2307-tests.js new file mode 100644 index 00000000..d5f7c059 --- /dev/null +++ b/packages/pg/test/integration/gh-issues/2307-tests.js @@ -0,0 +1,24 @@ +'use strict' + +const pg = require('../../../lib') +const helper = require('../test-helper') + +const suite = new helper.Suite() + +suite.test('bad ssl credentials do not cause crash', (done) => { + const config = { + ssl: { + ca: 'invalid_value', + key: 'invalid_value', + cert: 'invalid_value', + }, + } + + const client = new pg.Client(config) + + client.connect((err) => { + assert(err) + client.end() + done() + }) +})