handle regression due to base58 stripping NULL bytes, discovered via JSVerify RNG state 0dec6b2a5f04d19873

This commit is contained in:
El RIDO 2019-05-19 09:54:40 +02:00
parent 909ff2daa7
commit 353d08daf6
No known key found for this signature in database
GPG key ID: 0F5C940A6BD81F92
4 changed files with 11 additions and 21 deletions

View file

@ -138,7 +138,7 @@ describe('Model', function () {
jsc.array(common.jscQueryString()),
'nestring',
function (schema, address, query, fragment) {
const fragmentString = common.btoa(fragment.padStart(32, String.fromCharCode(0)));
const fragmentString = common.btoa(fragment.padStart(32, '\u0000'));
let clean = jsdom('', {
url: schema.join('') + '://' + address.join('') +
'/?' + query.join('') + '#' + fragmentString
@ -157,7 +157,7 @@ describe('Model', function () {
'nestring',
jsc.array(common.jscHashString()),
function (schema, address, query, fragment, trail) {
const fragmentString = common.btoa(fragment.padStart(32, String.fromCharCode(0)));
const fragmentString = common.btoa(fragment.padStart(32, '\u0000'));
let clean = jsdom('', {
url: schema.join('') + '://' + address.join('') + '/?' +
query.join('') + '#' + fragmentString + '&' + trail.join('')
@ -175,14 +175,8 @@ describe('Model', function () {
jsc.array(common.jscQueryString()),
'nestring',
function (schema, address, query, fragment) {
// base58 strips leading NULL bytes
while(fragment.charAt(0) === '\u0000') {
fragment = fragment.substr(1);
}
// string may not be empty (when only NULL bytes and trimmed)
if (fragment.length === 0) {
return true;
}
// base58 strips leading NULL bytes, so the string is padded with these if not found
fragment = fragment.padStart(32, '\u0000');
let fragmentString = $.PrivateBin.CryptTool.base58encode(fragment),
clean = jsdom('', {
url: schema.join('') + '://' + address.join('') +
@ -202,14 +196,8 @@ describe('Model', function () {
'nestring',
jsc.array(common.jscHashString()),
function (schema, address, query, fragment, trail) {
// base58 strips leading NULL bytes
while(fragment.charAt(0) === '\u0000') {
fragment = fragment.substr(1);
}
// string may not be empty (when only NULL bytes and trimmed)
if (fragment.length === 0) {
return true;
}
// base58 strips leading NULL bytes, so the string is padded with these if not found
fragment = fragment.padStart(32, '\u0000');
let fragmentString = $.PrivateBin.CryptTool.base58encode(fragment),
clean = jsdom('', {
url: schema.join('') + '://' + address.join('') + '/?' +