golang 1.9.4とCGO_CFLAGS_ALLOW環境変数

golangで1.9.4のセキュリティアップデートでてます。

github.com

cve.mitre.org

ところがアップデートすると、cgoのCFLAG等で制限されたフラグを使ってるライブラリで以下のようなメッセージを吐いてビルドがこけるようになるケースがある模様。(´;ω;`)ブワッ

$ go get github.com/crewjam/go-xmlsec
go build github.com/crewjam/go-xmlsec: invalid flag in #cgo CFLAGS: -w

そんなときは、慌てず騒がずトライアンドエラーで許可するフラグの正規表現つくってCGO_CFLAGS_ALLOW環境変数にいれれば、ビルドはできるようになります。

$ export CGO_CFLAGS_ALLOW="\\A(-w|-UXMLSEC_CRYPTO_DYNAMIC_LOADING)\\z"
$ go get github.com/crewjam/go-xmlsec

でもエラーになったからって何も考えずに-fplugin=とか-plugin=とかを許可するとセキュリティアップデートのイミがなくなるので、フラグのイミはちゃんと確認することをオススメします。

取り急ぎ、以上。