class ArrayLengthLimiter (Niantic.ARDK.Utilities.BinarySerialization.Contexts.ArrayLengthLimiter)

Overview

Context class used by array serializers to limit the maximum amount of array items in a single serialization (even if from different arrays). This is used to avoid possible Denial of Service attacks where a Stream tells to allocate 2GB of memory or similar. The limit is int items, not actual bytes allocated. By default, the limit is 10 million items, which is around one 10mb for bytes, 40mb for ints. More...

class ArrayLengthLimiter: Niantic.ARDK.Utilities.BinarySerialization.ISerializationContext {
public:
    // properties

    int AmountInUse;
    int Limit;

    // methods

    void ReserveOrThrow(int amount);
};

Detailed Documentation

Context class used by array serializers to limit the maximum amount of array items in a single serialization (even if from different arrays). This is used to avoid possible Denial of Service attacks where a Stream tells to allocate 2GB of memory or similar. The limit is int items, not actual bytes allocated. By default, the limit is 10 million items, which is around one 10mb for bytes, 40mb for ints.

Properties

int AmountInUse

Gets the amount of array items already in use during the current (de)serialization process.

int Limit

Gets or sets the limit of array items that can be serialized or deserialized. This value is used before allocating memory during deserialization, as a way to avoid DoS attacks.

Methods

void ReserveOrThrow(int amount)

Reserves the given amount of "array items" or throw an InvalidOperationException if that