1
0
mirror of https://github.com/golang/go synced 2024-11-21 15:54:43 -07:00

cgo: Only allow numeric / string / character type constants for references

to #defined things.

Fixes #520.

R=rsc, rsaarelm
CC=golang-dev
https://golang.org/cl/186138
This commit is contained in:
Devon H. O'Dell 2010-01-13 16:48:14 -08:00 committed by Russ Cox
parent c6336155f1
commit e8afb6d87f

View File

@ -48,7 +48,13 @@ func (p *Prog) loadDebugInfo() {
val = strings.TrimSpace(line[tabIndex:])
}
defines[key] = val
// Only allow string, character, and numeric constants. Ignoring #defines for
// symbols allows those symbols to be referenced in Go, as they will be
// translated by gcc later.
_, err := strconv.Atoi(string(val[0]))
if err == nil || val[0] == '\'' || val[0] == '"' {
defines[key] = val
}
}
// Construct a slice of unique names from p.Crefs.