Skip to content
Snippets Groups Projects
Commit 5ec1fc89 authored by Serge Lamikhov-Center's avatar Serge Lamikhov-Center
Browse files

Prevent a crash when working with MN10300 ELF file

parent 2ed975be
No related branches found
No related tags found
No related merge requests found
......@@ -686,10 +686,11 @@ class dump
void* desc;
Elf_Word descsz;
notes.get_note( j, type, name, desc, descsz );
// 'name' usually contains \0 at the end. Try to fix it
name = name.c_str();
note( out, j, type, name );
if ( notes.get_note(j, type, name, desc, descsz) ) {
// 'name' usually contains \0 at the end. Try to fix it
name = name.c_str();
note( out, j, type, name );
}
}
out << std::endl;
......
......@@ -60,8 +60,13 @@ class note_section_accessor
const endianess_convertor& convertor = elf_file.get_convertor();
type = convertor( *(Elf_Word*)( pData + 2*sizeof( Elf_Word ) ) );
Elf_Word namesz = convertor( *(Elf_Word*)( pData ) );
name.assign( pData + 3*sizeof( Elf_Word ), namesz );
descSize = convertor( *(Elf_Word*)( pData + sizeof( namesz ) ) );
Elf_Word max_name_size = note_section->get_size() - note_start_positions[index];
if ( namesz > max_name_size ||
namesz + descSize > max_name_size ) {
return false;
}
name.assign( pData + 3 * sizeof( Elf_Word ), namesz );
if ( 0 == descSize ) {
desc = 0;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment