mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-23 12:09:49 +00:00
Warn unsupported compress type and corrupted compressed section
* readelf.c (dump_section_as_strings): Warn unsupported compress type and corrupted compressed section. (dump_section_as_bytes): Likewise. (load_specific_debug_section): Likewise.
This commit is contained in:
parent
209ce4c2de
commit
813dabb9f0
@ -1,3 +1,10 @@
|
||||
2015-07-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* readelf.c (dump_section_as_strings): Warn unsupported compress
|
||||
type and corrupted compressed section.
|
||||
(dump_section_as_bytes): Likewise.
|
||||
(load_specific_debug_section): Likewise.
|
||||
|
||||
2015-07-09 Catherine Moore <clm@codesourcery.com>
|
||||
|
||||
* readelf.c (print_mips_fp_abi_value): Handle
|
||||
|
@ -12030,13 +12030,21 @@ dump_section_as_strings (Elf_Internal_Shdr * section, FILE * file)
|
||||
unsigned int compression_header_size
|
||||
= get_compression_header (& chdr, (unsigned char *) start);
|
||||
|
||||
if (chdr.ch_type == ELFCOMPRESS_ZLIB
|
||||
&& chdr.ch_addralign == section->sh_addralign)
|
||||
if (chdr.ch_type != ELFCOMPRESS_ZLIB)
|
||||
{
|
||||
uncompressed_size = chdr.ch_size;
|
||||
start += compression_header_size;
|
||||
new_size -= compression_header_size;
|
||||
warn (_("section '%s' has unsupported compress type: %d\n"),
|
||||
printable_section_name (section), chdr.ch_type);
|
||||
return;
|
||||
}
|
||||
else if (chdr.ch_addralign != section->sh_addralign)
|
||||
{
|
||||
warn (_("compressed section '%s' is corrupted\n"),
|
||||
printable_section_name (section));
|
||||
return;
|
||||
}
|
||||
uncompressed_size = chdr.ch_size;
|
||||
start += compression_header_size;
|
||||
new_size -= compression_header_size;
|
||||
}
|
||||
else if (new_size > 12 && streq ((char *) start, "ZLIB"))
|
||||
{
|
||||
@ -12156,13 +12164,21 @@ dump_section_as_bytes (Elf_Internal_Shdr * section,
|
||||
unsigned int compression_header_size
|
||||
= get_compression_header (& chdr, start);
|
||||
|
||||
if (chdr.ch_type == ELFCOMPRESS_ZLIB
|
||||
&& chdr.ch_addralign == section->sh_addralign)
|
||||
if (chdr.ch_type != ELFCOMPRESS_ZLIB)
|
||||
{
|
||||
uncompressed_size = chdr.ch_size;
|
||||
start += compression_header_size;
|
||||
new_size -= compression_header_size;
|
||||
warn (_("section '%s' has unsupported compress type: %d\n"),
|
||||
printable_section_name (section), chdr.ch_type);
|
||||
return;
|
||||
}
|
||||
else if (chdr.ch_addralign != section->sh_addralign)
|
||||
{
|
||||
warn (_("compressed section '%s' is corrupted\n"),
|
||||
printable_section_name (section));
|
||||
return;
|
||||
}
|
||||
uncompressed_size = chdr.ch_size;
|
||||
start += compression_header_size;
|
||||
new_size -= compression_header_size;
|
||||
}
|
||||
else if (new_size > 12 && streq ((char *) start, "ZLIB"))
|
||||
{
|
||||
@ -12290,9 +12306,18 @@ load_specific_debug_section (enum dwarf_section_display_enum debug,
|
||||
Elf_Internal_Chdr chdr;
|
||||
unsigned int compression_header_size
|
||||
= get_compression_header (&chdr, start);
|
||||
if (chdr.ch_type != ELFCOMPRESS_ZLIB
|
||||
|| chdr.ch_addralign != sec->sh_addralign)
|
||||
return 0;
|
||||
if (chdr.ch_type != ELFCOMPRESS_ZLIB)
|
||||
{
|
||||
warn (_("section '%s' has unsupported compress type: %d\n"),
|
||||
section->name, chdr.ch_type);
|
||||
return 0;
|
||||
}
|
||||
else if (chdr.ch_addralign != sec->sh_addralign)
|
||||
{
|
||||
warn (_("compressed section '%s' is corrupted\n"),
|
||||
section->name);
|
||||
return 0;
|
||||
}
|
||||
uncompressed_size = chdr.ch_size;
|
||||
start += compression_header_size;
|
||||
size -= compression_header_size;
|
||||
|
Loading…
Reference in New Issue
Block a user