Bugfixes for pe_print_debugdata()
Use a separate iteration variable for inner loop (😊). This
generally prevented any debug directory entries after a
IMAGE_DEBUG_TYPE_CODEVIEW entry from being reported.
Don't leak the memory allocated for the section containing the debug
directory.
bfd/ChangeLog:
2020-01-16 Jon Turney <jon.turney@dronecode.org.uk>
* peXXigen.c (pe_print_debugdata): Fix the iteration variable for
inner loop. Fix a memory leak.
This commit is contained in:
parent
bd434cc4d9
commit
87b2920fc5
|
@ -1,3 +1,8 @@
|
|||
2020-01-16 Jon Turney <jon.turney@dronecode.org.uk>
|
||||
|
||||
* peXXigen.c (pe_print_debugdata): Fix the iteration variable for
|
||||
inner loop. Fix a memory leak.
|
||||
|
||||
2020-01-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* coffgen.c (coff_real_object_p): Don't clear obj_coff_keep_syms
|
||||
|
|
|
@ -2630,7 +2630,7 @@ pe_print_debugdata (bfd * abfd, void * vfile)
|
|||
asection *section;
|
||||
bfd_byte *data = 0;
|
||||
bfd_size_type dataoff;
|
||||
unsigned int i;
|
||||
unsigned int i, j;
|
||||
|
||||
bfd_vma addr = extra->DataDirectory[PE_DEBUG_DATA].VirtualAddress;
|
||||
bfd_size_type size = extra->DataDirectory[PE_DEBUG_DATA].Size;
|
||||
|
@ -2722,8 +2722,8 @@ pe_print_debugdata (bfd * abfd, void * vfile)
|
|||
idd.SizeOfData, cvinfo))
|
||||
continue;
|
||||
|
||||
for (i = 0; i < cvinfo->SignatureLength; i++)
|
||||
sprintf (&signature[i*2], "%02x", cvinfo->Signature[i] & 0xff);
|
||||
for (j = 0; j < cvinfo->SignatureLength; j++)
|
||||
sprintf (&signature[j*2], "%02x", cvinfo->Signature[j] & 0xff);
|
||||
|
||||
/* xgettext:c-format */
|
||||
fprintf (file, _("(format %c%c%c%c signature %s age %ld)\n"),
|
||||
|
@ -2732,6 +2732,8 @@ pe_print_debugdata (bfd * abfd, void * vfile)
|
|||
}
|
||||
}
|
||||
|
||||
free(data);
|
||||
|
||||
if (size % sizeof (struct external_IMAGE_DEBUG_DIRECTORY) != 0)
|
||||
fprintf (file,
|
||||
_("The debug directory size is not a multiple of the debug directory entry size\n"));
|
||||
|
|
Loading…
Reference in New Issue