mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
internal/obj: protect against nil addr.Sym
This has been the root cause of a number of crashes caused by fuzz throwing modem noise at the assembler, which in turn attempts to print diagnostics but instead just gets crashes. Fixes #12627. Change-Id: I72c2da79d8eb240e1a37aa6140454c552b05e0f1 Reviewed-on: https://go-review.googlesource.com/14595 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
dace9397b1
commit
448f84a43a
1 changed files with 15 additions and 3 deletions
|
|
@ -457,13 +457,25 @@ func Mconv(a *Addr) string {
|
|||
}
|
||||
|
||||
case NAME_EXTERN:
|
||||
str = fmt.Sprintf("%s%s(SB)", a.Sym.Name, offConv(a.Offset))
|
||||
if a.Sym != nil {
|
||||
str = fmt.Sprintf("%s%s(SB)", a.Sym.Name, offConv(a.Offset))
|
||||
} else {
|
||||
str = fmt.Sprintf("%s(SB)", offConv(a.Offset))
|
||||
}
|
||||
|
||||
case NAME_GOTREF:
|
||||
str = fmt.Sprintf("%s%s@GOT(SB)", a.Sym.Name, offConv(a.Offset))
|
||||
if a.Sym != nil {
|
||||
str = fmt.Sprintf("%s%s@GOT(SB)", a.Sym.Name, offConv(a.Offset))
|
||||
} else {
|
||||
str = fmt.Sprintf("%s@GOT(SB)", offConv(a.Offset))
|
||||
}
|
||||
|
||||
case NAME_STATIC:
|
||||
str = fmt.Sprintf("%s<>%s(SB)", a.Sym.Name, offConv(a.Offset))
|
||||
if a.Sym != nil {
|
||||
str = fmt.Sprintf("%s<>%s(SB)", a.Sym.Name, offConv(a.Offset))
|
||||
} else {
|
||||
str = fmt.Sprintf("<>%s(SB)", offConv(a.Offset))
|
||||
}
|
||||
|
||||
case NAME_AUTO:
|
||||
if a.Sym != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue