Touch up the line table reader to ensure that it can detect and reject
an invalid program offset field in the table header.
Fixes #53329.
Change-Id: Ia8d684e909af3aca3014b4a3d0dfd431e3f5a9f0
Reviewed-on: https://go-review.googlesource.com/c/go/+/413814
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
} else {
headerLength = Offset(buf.uint32())
}
- r.programOffset = buf.off + headerLength
+ programOffset := buf.off + headerLength
+ if programOffset > r.endOffset {
+ return DecodeError{"line", hdrOffset, fmt.Sprintf("malformed line table: program offset %d exceeds end offset %d", programOffset, r.endOffset)}
+ }
+ r.programOffset = programOffset
r.minInstructionLength = int(buf.uint8())
if r.version >= 4 {
// [DWARF4 6.2.4]