From 728d897c4e38a666750a747570fe2a3100b797c2 Mon Sep 17 00:00:00 2001 From: Fonger <5862369+Fonger@users.noreply.github.com> Date: Sat, 18 Aug 2018 14:33:12 +0800 Subject: [PATCH] fix(buffer): use safe-buffer polyfill to maintain compatibility node.js < 4.5 and node.js < 5.9 doesn't support Buffer.alloc and Buffer.from --- lib/auth/scram.js | 3 ++- lib/connection/commands.js | 1 + lib/connection/connection.js | 3 ++- lib/connection/pool.js | 1 + lib/topologies/replset_state.js | 3 ++- lib/topologies/shared.js | 1 + package-lock.json | 18 ++++++++++++++++++ package.json | 3 ++- test/tests/functional/server_tests.js | 1 + test/tests/unit/common.js | 1 + test/tests/unit/scram_iterations_tests.js | 1 + 11 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 package-lock.json diff --git a/lib/auth/scram.js b/lib/auth/scram.js index 843ef350d..719c580b6 100644 --- a/lib/auth/scram.js +++ b/lib/auth/scram.js @@ -4,7 +4,8 @@ var f = require('util').format, crypto = require('crypto'), retrieveBSON = require('../connection/utils').retrieveBSON, Query = require('../connection/commands').Query, - MongoError = require('../error').MongoError; + MongoError = require('../error').MongoError, + Buffer = require('safe-buffer').Buffer; let saslprep; diff --git a/lib/connection/commands.js b/lib/connection/commands.js index 4ebff4266..601571359 100644 --- a/lib/connection/commands.js +++ b/lib/connection/commands.js @@ -4,6 +4,7 @@ var retrieveBSON = require('./utils').retrieveBSON; var BSON = retrieveBSON(); var Long = BSON.Long; const MongoError = require('../error').MongoError; +const Buffer = require('safe-buffer').Buffer; // Incrementing request id var _requestId = 0; diff --git a/lib/connection/connection.js b/lib/connection/connection.js index a111e6f38..d102f341d 100644 --- a/lib/connection/connection.js +++ b/lib/connection/connection.js @@ -13,7 +13,8 @@ var inherits = require('util').inherits, MongoNetworkError = require('../error').MongoNetworkError, Logger = require('./logger'), OP_COMPRESSED = require('../wireprotocol/shared').opcodes.OP_COMPRESSED, - MESSAGE_HEADER_SIZE = require('../wireprotocol/shared').MESSAGE_HEADER_SIZE; + MESSAGE_HEADER_SIZE = require('../wireprotocol/shared').MESSAGE_HEADER_SIZE, + Buffer = require('safe-buffer').Buffer; var _id = 0; var debugFields = [ diff --git a/lib/connection/pool.js b/lib/connection/pool.js index b2bbca86d..02458be83 100644 --- a/lib/connection/pool.js +++ b/lib/connection/pool.js @@ -18,6 +18,7 @@ const uncompressibleCommands = require('../wireprotocol/compression').uncompress const resolveClusterTime = require('../topologies/shared').resolveClusterTime; const apm = require('./apm'); const defaultAuthProviders = require('../auth/defaultAuthProviders').defaultAuthProviders; +const Buffer = require('safe-buffer').Buffer; var DISCONNECTED = 'disconnected'; var CONNECTING = 'connecting'; diff --git a/lib/topologies/replset_state.js b/lib/topologies/replset_state.js index 19229bba5..474517359 100644 --- a/lib/topologies/replset_state.js +++ b/lib/topologies/replset_state.js @@ -6,7 +6,8 @@ var inherits = require('util').inherits, EventEmitter = require('events').EventEmitter, Logger = require('../connection/logger'), ReadPreference = require('./read_preference'), - MongoError = require('../error').MongoError; + MongoError = require('../error').MongoError, + Buffer = require('safe-buffer').Buffer; var TopologyType = { Single: 'Single', diff --git a/lib/topologies/shared.js b/lib/topologies/shared.js index 9191ca029..4cb72ea0d 100644 --- a/lib/topologies/shared.js +++ b/lib/topologies/shared.js @@ -3,6 +3,7 @@ const os = require('os'); const f = require('util').format; const ReadPreference = require('./read_preference'); +const Buffer = require('safe-buffer').Buffer; /** * Emit event if it exists diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..5e741989b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18 @@ +{ + "name": "mongodb-core", + "version": "3.1.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + } + } +} diff --git a/package.json b/package.json index 8cd876c39..3e862e32b 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ ], "dependencies": { "bson": "^1.1.0", - "require_optional": "^1.0.1" + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2" }, "devDependencies": { "chai": "^4.1.2", diff --git a/test/tests/functional/server_tests.js b/test/tests/functional/server_tests.js index 9aee561fa..5e1b2d299 100644 --- a/test/tests/functional/server_tests.js +++ b/test/tests/functional/server_tests.js @@ -7,6 +7,7 @@ const Server = require('../../../lib/topologies/server'); const Bson = require('bson'); const Connection = require('../../../lib/connection/connection'); const mock = require('mongodb-mock-server'); +const Buffer = require('safe-buffer').Buffer; describe('Server tests', function() { it('should correctly connect server to single instance', { diff --git a/test/tests/unit/common.js b/test/tests/unit/common.js index c720fdd60..52d8c0b23 100644 --- a/test/tests/unit/common.js +++ b/test/tests/unit/common.js @@ -4,6 +4,7 @@ const mock = require('mongodb-mock-server'); const ObjectId = require('bson').ObjectId; const Timestamp = require('bson').Timestamp; const Binary = require('bson').Binary; +const Buffer = require('safe-buffer').Buffer; class ReplSetFixture { constructor() { diff --git a/test/tests/unit/scram_iterations_tests.js b/test/tests/unit/scram_iterations_tests.js index 23c0f3fa3..cec41e3d1 100644 --- a/test/tests/unit/scram_iterations_tests.js +++ b/test/tests/unit/scram_iterations_tests.js @@ -3,6 +3,7 @@ const expect = require('chai').expect; const mock = require('mongodb-mock-server'); const Server = require('../../../lib/topologies/server'); +const Buffer = require('safe-buffer').Buffer; describe('SCRAM Iterations Tests', function() { const test = {};