From: Devon H. O'Dell Date: Thu, 14 Jan 2010 00:48:14 +0000 (-0800) Subject: cgo: Only allow numeric / string / character type constants for references X-Git-Tag: weekly.2010-01-13~2 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e8afb6d87f76668ce4b4b560d89e4ecc2b7d974f;p=gostls13.git 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 --- diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index 4f65a1afb7..c525b492aa 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -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.