cmd/vet: cgo: emit no error for calls to C.CBytes

Fixes issue golang/go#17563

Change-Id: Ibb41ea9419907193526cc601f6afd07d8689b1fe
Reviewed-on: https://go-review.googlesource.com/31810
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/cmd/vet/cgo.go b/src/cmd/vet/cgo.go
index b896862..d233e9a 100644
--- a/src/cmd/vet/cgo.go
+++ b/src/cmd/vet/cgo.go
@@ -38,6 +38,11 @@
 		return
 	}
 
+	// A call to C.CBytes passes a pointer but is always safe.
+	if sel.Sel.Name == "CBytes" {
+		return
+	}
+
 	for _, arg := range x.Args {
 		if !typeOKForCgoCall(cgoBaseType(f, arg)) {
 			f.Badf(arg.Pos(), "possibly passing Go type with embedded pointer to C")