    def __init__(self, data, limit):
        """
        :param data: Underlying data object
        :param limit: maximum number of bytes the reader should allow
        """
        self.data = data
        self.limit = limit
        self.bytes_read = 0
The software performs operations on a memory buffer, but it can read from or write to a memory location that is outside of the intended boundary of the buffer.