        int          Read(void* pDestBuffer, int nSize)
        {
            if ( m_nPos + nSize >= m_nLen )
                nSize = m_nLen - m_nPos - 1;

            memcpy( pDestBuffer, (m_sFile + m_nPos), nSize );
            m_nPos += nSize;

            return nSize;
        }
The software writes data past the end, or before the beginning, of the intended buffer.