mirror of
https://github.com/QuasarApp/LIEF.git
synced 2025-05-09 02:09:34 +00:00
Merge pull request #421 from kohnakagawa/fix/parse_corrupted_symbols
add stream buffer size limit
This commit is contained in:
commit
e6c7e2af9e
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user