Method: Rex::OLE::MiniFAT#read

Defined in:
lib/rex/ole/minifat.rb

#readObject

low-level functions



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rex/ole/minifat.rb', line 16

def read
  @entries = []

  visited = []
  sect = @stg.header._sectMiniFatStart
  @stg.header._csectMiniFat.times { |idx|
    break if sect == SECT_END

    if (visited.include?(sect))
      raise RuntimeError, 'Sector chain loop detected (0x%08x)' % sect
    end
    visited << sect

    buf = @stg.read_sector(sect, @stg.header.sector_size)
    @stg.header.idx_per_sect.times { |idx|
      @entries << Util.get32(buf, (idx*4))
    }
    sect = @stg.next_sector(sect)
  }
end