mirror of
https://github.com/golang/go
synced 2024-09-29 16:24:28 -06:00
debug/elf: validate shstrndx
Changes:
1. When e_shstrndx holds the value SHN_UNDEF (0), the file has no section
name string table. In this case, do not try to set section names .
2. e_shstrndx should point to an SHT_STRTAB section. If it does not, returns
an error.
Reference:
https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html
Updates #54967.
Change-Id: Ic8f228061d996fd7845dfa630719a1ba12d2bb60
GitHub-Last-Rev: aeb70ca8a0
GitHub-Pull-Request: golang/go#55001
Reviewed-on: https://go-review.googlesource.com/c/go/+/430155
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
73c38f226e
commit
b6d5831caa
@ -474,7 +474,16 @@ func NewFile(r io.ReaderAt) (*File, error) {
|
||||
}
|
||||
|
||||
// Load section header string table.
|
||||
shstrtab, err := f.Sections[shstrndx].Data()
|
||||
if shstrndx == 0 {
|
||||
// If the file has no section name string table,
|
||||
// shstrndx holds the value SHN_UNDEF (0).
|
||||
return f, nil
|
||||
}
|
||||
shstr := f.Sections[shstrndx]
|
||||
if shstr.Type != SHT_STRTAB {
|
||||
return nil, &FormatError{shoff + int64(shstrndx*shentsize), "invalid ELF section name string table type", shstr.Type}
|
||||
}
|
||||
shstrtab, err := shstr.Data()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user