From: Than McIntosh Date: Thu, 23 Apr 2020 12:43:29 +0000 (-0400) Subject: [dev.link] cmd/link/internal/loader: fix buglet in section handling X-Git-Tag: go1.15beta1~270^2^2~41 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=adea6a90e361629d20a68400c0c5cdcdfcdf087e;p=gostls13.git [dev.link] cmd/link/internal/loader: fix buglet in section handling Allow for the possibility that a client could call newExtSym(), then ask for the section of the new sym before SetSectSym is called on it (check in SymSect for this case). Change-Id: I7bd78e7b3b7618943705b616f62ea78c4a1b68d0 Reviewed-on: https://go-review.googlesource.com/c/go/+/229603 Reviewed-by: Jeremy Faller --- diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 987feeb284..ba0cff3ff6 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -1075,6 +1075,12 @@ func (l *Loader) SetSymAlign(i Sym, align int32) { // SymValue returns the section of the i-th symbol. i is global index. func (l *Loader) SymSect(i Sym) *sym.Section { + if int(i) >= len(l.symSects) { + // symSects is extended lazily -- it the sym in question is + // outside the range of the existing slice, then we assume its + // section has not yet been set. + return nil + } return l.sects[l.symSects[i]] }