4
0
mirror of https://github.com/QuasarApp/LIEF.git synced 2025-05-09 02:09:34 +00:00

Merge pull request from kohnakagawa/fix/parse_corrupted_symbols

add stream buffer size limit
This commit is contained in:
Romain 2020-05-28 06:21:15 +02:00 committed by GitHub
commit e6c7e2af9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -485,16 +485,16 @@ void Parser::parse_symbols(void) {
const pe_symbol& raw_symbol = this->stream_->peek<pe_symbol>(current_offset);
Symbol symbol{&raw_symbol};
std::string name;
const auto stream_max_size = this->stream_->size();
if ((raw_symbol.Name.Name.Zeroes & 0xffff) != 0) {
std::string shortname{raw_symbol.Name.ShortName, sizeof(raw_symbol.Name.ShortName)};
name = shortname.c_str();
symbol.name_ = shortname.c_str();
} else {
uint64_t offset_name =
this->binary_->header().pointerto_symbol_table() +
this->binary_->header().numberof_symbols() * STRUCT_SIZES::Symbol16Size +
raw_symbol.Name.Name.Offset;
symbol.name_ = this->stream_->peek_string_at(offset_name);
symbol.name_ = this->stream_->peek_string_at(offset_name, stream_max_size - offset_name);
}
if (symbol.section_number() > 0 and