go/src/debug
Zeke Lu fa13731a45 debug/elf: return error on reading from SHT_NOBITS sections
An SHT_NOBITS section contains no bytes and occupies no space in the
file. This change makes it return an error on reading from this section
so that it will force the caller to check for an SHT_NNOBITS section.

We have considered another option to return "nil, nil" for the Data
method. It's abandoned because it might lead a program to simply do
the wrong thing, thinking that the section is empty.

Please note that it breaks programs which expect a byte slice with the
length described by the sh_size field. There are two reasons to
introduce this breaking change: 1. SHT_NOBITS means no data and it's
unnecessary to allocate memory for it; 2. it could result in an OOM if
the file is corrupted and has a huge sh_size.

Fixes #54967.

Change-Id: I0c3ed4e097214fe88413d726a89122105ad45d4f
GitHub-Last-Rev: 994c12d9da
GitHub-Pull-Request: golang/go#54994
Reviewed-on: https://go-review.googlesource.com/c/go/+/429601
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2022-09-27 22:16:32 +00:00
..
buildinfo debug/buildinfo: remove redundant type conversion 2022-09-06 16:59:51 +00:00
dwarf debug/dwarf: don't crash on invalid range/rnglist offset 2022-09-27 16:08:16 +00:00
elf debug/elf: return error on reading from SHT_NOBITS sections 2022-09-27 22:16:32 +00:00
gosym debug/gosym: rename nameoff to nameOff to match runtime 2022-09-07 16:39:44 +00:00
macho encoding/gob: use saferio.SliceCap when decoding a slice 2022-09-25 01:18:43 +00:00
pe encoding/gob: use saferio.SliceCap when decoding a slice 2022-09-25 01:18:43 +00:00
plan9obj debug/plan9obj: don't crash on EOF before symbol type 2022-08-23 20:32:50 +00:00