uri: allow empty keys.

This commit is contained in:
Christopher Jeffrey 2017-01-11 19:07:20 -08:00
parent 6e7a19ef35
commit e82950a6e8
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -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;