From 55fc8d7388a735eec48c82439cb867ddd40bb3ba Mon Sep 17 00:00:00 2001 From: delvedor Date: Mon, 28 Jan 2019 11:27:21 +0100 Subject: [PATCH] Handle unescaped characters --- lib/Connection.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/Connection.js b/lib/Connection.js index 35e982a70..e5187ce78 100644 --- a/lib/Connection.js +++ b/lib/Connection.js @@ -6,6 +6,7 @@ const https = require('https') const debug = require('debug')('elasticsearch') const decompressResponse = require('decompress-response') const pump = require('pump') +const INVALID_PATH_REGEX = /[^\u0021-\u00ff]/ const { TimeoutError, ConfigurationError } = require('./errors') class Connection { @@ -44,8 +45,15 @@ class Connection { this._openRequests++ var ended = false + const requestParams = this.buildRequestObject(params) + // https://github.com/nodejs/node/commit/b961d9fd83 + if (INVALID_PATH_REGEX.test(requestParams.path) === true) { + callback(new TypeError(`ERR_UNESCAPED_CHARACTERS: ${requestParams.path}`), null) + return { abort: () => {} } + } + debug('Starting a new request', params) - const request = this.makeRequest(this.buildRequestObject(params)) + const request = this.makeRequest(requestParams) // listen for the response event // TODO: handle redirects?