BitMiracle.LibTiff.Classic.Tiff.checkDirOffset C# (CSharp) Method

checkDirOffset() private method

Checks the directory offset against the list of already seen directory offsets.
This is a trick to prevent IFD looping. The one can create TIFF file with looped directory pointers. We will maintain a list of already seen directories and check every IFD offset against that list.
private checkDirOffset ( uint diroff ) : bool
diroff uint
return bool
        private bool checkDirOffset(uint diroff)
        {
            if (diroff == 0)
            {
                // no more directories
                return false;
            }

            for (short n = 0; n < m_dirnumber && m_dirlist != null; n++)
            {
                if (m_dirlist[n] == diroff)
                    return false;
            }

            m_dirnumber++;

            if (m_dirnumber > m_dirlistsize)
            {
                // XXX: Reduce memory allocation granularity of the dirlist array.
                uint[] new_dirlist = Realloc(m_dirlist, m_dirnumber - 1, 2 * m_dirnumber);
                m_dirlistsize = 2 * m_dirnumber;
                m_dirlist = new_dirlist;
            }

            m_dirlist[m_dirnumber - 1] = diroff;
            return true;
        }
Tiff