Socket
Socket
Sign inDemoInstall

bop

Package Overview
Dependencies
0
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.2.0 to 3.3.0

12

lib/bop.js

@@ -170,2 +170,3 @@ /*

, dist = 0
, first = -1
;

@@ -176,7 +177,7 @@ // search

if ( i < 0 ) {
dist = j - last;
dist = ( ( !~distance ) && ( cnt === 1 ) ) ? j : j - last;
// if sparse switch is on, collect overlapping sequences
if ( sparse && last && ( m > dist ) && ( j += gs[ 0 ] ) ) continue;
if ( distance && ( mdist < dist ) ) mdist = dist;
cnt++;
if ( ++cnt === 1 ) first = j;
last = j;

@@ -186,3 +187,8 @@ j += gs[ 0 ];

}
return distance ? [ cnt, ( cnt < 2 ) ? -1 : mdist - m ] : [ cnt ];
if ( distance ) {
if ( cnt === 0 ) return [ cnt, -1, n, n ];
if ( cnt === 1 ) return [ cnt, -1, first, n - last - m ];
return [ cnt, mdist - m, first, n - last - m ];
}
return [ cnt ];
};

@@ -189,0 +195,0 @@

{
"name" : "bop"
, "version" : "3.2.0"
, "version" : "3.3.0"
, "description" : "Bop, an ultra fast Boyer-Moore parser/matcher, optimized for string and buffer patterns (<= 255 bytes)."

@@ -5,0 +5,0 @@ , "homepage" : "https://github.com/rootslab/bop"

@@ -88,6 +88,10 @@ ### Bop

* then, if distance switch is on, it returns also the maximum
* distance found between 2 patterns.
* distance found between 2 patterns, then, the distance of the pattern
* from the starting index (to the left) and the distance from the end of pattern,
* to the end of data (to the right).
*
* NOTE: if 0 or only 1 occurrence was found, the max distance will
* be -1 and then the resulting array will be respectvely [0, -1]
* and [1, -1].
* be -1 and then the resulting array will be respectvely:
* - [0, -1, data.length, data.length ]
* - [1, -1, .., .. ]
*/

@@ -94,0 +98,0 @@ Bop#count( Buffer data [, Number start_from [, Boolean sparse [, Boolean distance ] ] ] ) : Array

@@ -23,12 +23,10 @@ var log = console.log

bpattern.copy( data, i );
log( ' -> !copy (%d) pattern to (%d,%d) slice', ++occ, i , i + bpattern.length );
};
for ( i = 1; i < indexes.length; ++i ) {
distances.push( indexes[ i ] - indexes[ i - 1 ] - plen );
}
for ( i = 1; i < indexes.length; ++i ) distances.push( indexes[ i ] - indexes[ i - 1 ] - plen );
log( '- parse for pattern (%d bytes )', plen );
var bop = Bop( bpattern )
, results = bop.parse( data, 0, false )
var results = bop.parse( data, 0, false )
// count with overlapping sequences

@@ -40,4 +38,6 @@ , cnt = null

log( '- parsed results: %d\n -> [%s]', results.length, results );
log( '- run #count on %d slices of data ', indexes.length );
log( '- check distance results.. ' );
do {

@@ -48,7 +48,20 @@ snip = data.slice( 0, indexes[ i ] );

if ( i ) {
if ( i > 1 ) assert.ok( cnt[ 1 ] === ( indexes[ i - 2 ] - bpattern.length ) );
else assert.ok( cnt[ 1 ] === -1 );
} else
if ( i > 1 ) {
assert.ok( cnt[ 1 ] === ( indexes[ i - 2 ] - bpattern.length ), 'wrong value: ' + cnt[ 2 ] + ' for slice(0,' + indexes[ i ] + ')' );
assert.ok( cnt[ 2 ] === results[ 0 ], 'wrong value: ' + cnt[ 2 ] + ' for slice(0,' + indexes[ i ] + ')' );
assert.ok( cnt[ 3 ] === snip.length - indexes[ i - 1 ] - bpattern.length, 'wrong value: ' + cnt[ 3 ] + ' for slice(0,' + indexes[ i ] + ')' );
}
else {
// i === 1
assert.ok( cnt[ 1 ] === -1, 'wrong value: ' + cnt[ 1 ] + ' for slice(0,' + indexes[ i ] + ')' );
assert.ok( cnt[ 2 ] === results[ 0 ], 'wrong value: ' + cnt[ 2 ] + ' for slice(0,' + indexes[ i ] + ')' );
assert.ok( cnt[ 3 ] === snip.length - results[ 0 ] - bpattern.length, 'wrong value: ' + cnt[ 3 ] + ' for slice(0,' + indexes[ i ] + ')' );
}
} else {
// i = 0, should return -1
assert.ok( cnt[ 1 ] === -1 );
// check 0 length reesults
assert.ok( cnt[ 2 ] === snip.length, 'wrong value: ' + cnt[ 2 ] + ' for slice(0,' + indexes[ i ] + ')' );
assert.ok( cnt[ 3 ] === snip.length, 'wrong value: ' + cnt[ 2 ] + ' for slice(0,' + indexes[ i ] + ')' );
}
log( ' -> !OK (%d) slice(%d,%d) ->', i , 0, indexes[ i ] || data.length , cnt );

@@ -55,0 +68,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc