Hi, On Fri, 2022-04-01 at 16:15 +0200, Mark Wielaard wrote: > elf_getdata_rawchunk keeps a list of Elf_Data_Chunk to track which > Elf_Data structures have already been requested. This allows elf_end > to clean up all internal data structures and the Elf_Data d_buf if > it was malloced. > > But it didn't check if a chunk was already requested earlier. This > meant that if for example dwelf_elf_gnu_build_id was called multiple > times to lookup a build-id from the phdrs a new Elf_Data_Chunk was > created. This could slowly leak memory. > > So also keep track of the offset from which the size and type of > the rawdata was requested so we can return existing data if it is > requested multiple times. > > Note that the current cache is a simple linked list but the chain > is normally not that long. It is normally used to get chunks from > the phdrs, and there are normally less than 10.
I pushed this. Cheers, Mark