From e82950a6e846552745e9483208cc088b39197fb7 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 11 Jan 2017 19:07:20 -0800 Subject: [PATCH] uri: allow empty keys. --- lib/btc/uri.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/btc/uri.js b/lib/btc/uri.js index 006b0388..e293822b 100644 --- a/lib/btc/uri.js +++ b/lib/btc/uri.js @@ -8,7 +8,6 @@ var util = require('../utils/util'); var Address = require('../primitives/address'); -var KeyRing = require('../primitives/keyring'); var Amount = require('./amount'); var assert = require('assert'); @@ -17,11 +16,9 @@ var assert = require('assert'); * @constructor * @param {Object|String} options * @property {Address} address - * @property {Number|-1} version * @property {Amount} amount * @property {String|null} label * @property {String|null} message - * @property {KeyRing|null} key * @property {String|null} request */ @@ -201,10 +198,9 @@ function BitcoinQuery() { function parsePairs(str) { var parts = str.split('&'); var data = new BitcoinQuery(); + var size = 0; var i, index, pair, key, value; - assert(parts.length <= 4, 'Too many keys in querystring.'); - for (i = 0; i < parts.length; i++) { pair = parts[i]; index = pair.indexOf('='); @@ -217,6 +213,13 @@ function parsePairs(str) { value = pair.substring(index + 1); } + if (key.length === 0) { + assert(value.length === 0, 'Empty key in querystring.'); + continue; + } + + assert(size < 4, 'Too many keys in querystring.'); + switch (key) { case 'amount': assert(data.amount == null, 'Duplicate key in querystring (amount).'); @@ -238,6 +241,8 @@ function parsePairs(str) { assert(false, 'Unknown querystring key: ' + value); break; } + + size++; } return data;