Skip to content

FuzzedDataProvider

import { FuzzedDataProvider } from "@vitiate/fuzzed-data-provider";

FuzzedDataProvider consumes bytes from a fuzzer-generated buffer and produces typed values. It follows the same design as LLVM’s FuzzedDataProvider.

new FuzzedDataProvider(data: Uint8Array)

Creates a provider that consumes bytes from data. A Buffer (which extends Uint8Array) can be passed directly.

PropertyTypeDescription
remainingBytesnumberNumber of unconsumed bytes remaining
MethodReturn TypeDescription
consumeBoolean()booleanConsume one byte as a boolean
consumeBooleans(maxLength)boolean[]Consume up to maxLength bytes, interpreting each byte’s LSB as a boolean
MethodReturn TypeDescription
consumeIntegral(maxNumBytes, isSigned?)numberConsume up to maxNumBytes (1-6) as an integer. isSigned defaults to false.
consumeIntegralInRange(min, max)numberConsume an integer uniformly distributed in [min, max]
consumeIntegrals(maxLength, numBytesPerIntegral, isSigned?)number[]Consume an array of integers
MethodReturn TypeDescription
consumeBigIntegral(maxNumBytes, isSigned?)bigintConsume up to maxNumBytes as a BigInt
consumeBigIntegralInRange(min, max)bigintConsume a BigInt in [min, max]
consumeBigIntegrals(maxLength, numBytesPerIntegral, isSigned?)bigint[]Consume an array of BigInts
MethodReturn TypeDescription
consumeNumber()numberConsume 8 bytes as a number (double)
consumeNumberInRange(min, max)numberConsume a number in [min, max]
consumeFloat()numberConsume 4 bytes as a float
consumeFloatInRange(min, max)numberConsume a float in [min, max]
consumeDouble()numberAlias for consumeNumber()
consumeDoubleInRange(min, max)numberAlias for consumeNumberInRange()
consumeNumbers(maxLength)number[]Consume an array of doubles
consumeProbabilityFloat()numberConsume a float in [0.0, 1.0]
consumeProbabilityDouble()numberConsume a double in [0.0, 1.0]
MethodReturn TypeDescription
consumeBytes(maxLength)Uint8ArrayConsume up to maxLength bytes
consumeRemainingAsBytes()Uint8ArrayConsume all remaining bytes
MethodReturn TypeDescription
consumeString(maxLength, options?)stringConsume up to maxLength characters
consumeRemainingAsString(options?)stringConsume all remaining bytes as a string
consumeStringArray(maxArrayLength, maxStringLength, options?)string[]Consume an array of strings
FieldTypeDefaultDescription
encodingstring"utf-8"String encoding
printablebooleanfalseRestrict to printable ASCII characters
MethodReturn TypeDescription
pickValue<T>(array)TPick a random element from the array
pickValues<T>(array, numValues)T[]Pick numValues elements (with replacement)

When no bytes remain, consume methods return zero-values: 0 for numbers, false for booleans, "" for strings, empty arrays for array methods. They do not throw.