你正在使用哪个版本的Go( go version
)?
$ go version
go version go1.21.1 darwin/arm64
这个问题在最新版本中是否会重现?
是的,它确实会。脚本在使用go1.21.0时可以正确解析。
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
$ go env
GO111MODULE=''
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users//Library/Caches/go-build'
GOENV='/Users//Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users//go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users//go'
GOPRIVATE=''
GOPROXY=''
GOROOT='/opt/homebrew/Cellar/go/1.21.2/libexec'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/opt/homebrew/Cellar/go/1.21.2/libexec/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.21.2'
GCCGO='gccgo'
AR='ar'
CC='cc'
CXX='c++'
CGO_ENABLED='1'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/7n/55m6c9j15c561rfd89pfj5_r0000gn/T/go-build2874079816=/tmp/go-build -gno-record-gcc-switches -fno-common'
你做了什么?
我有一个Golang服务,用于解析由npm/gulp后端实时生成的模板。在node端使用的其中一个包是browsersync,它将一个脚本注入到页面的body顶部。这个脚本被封装在CDATA标签中。
一个简单的复现在这里: https://go.dev/play/p/zDDuftHipgG
这个问题似乎是由这个提交引起的: bbd043f
并且与这个安全问题有关: #62197
提交作者提到这个更改将破坏一些合法的代码,但我认为破坏CDATA标签是一个足够严重的问题,不应该被忽视。
你期望看到什么?
模板解析和执行正确。
你看到了什么?
执行失败,错误为:
html/template:temp: ends in a non-text context: {stateJS delimNone urlPartNone jsCtxRegexp attrNone elementScript <nil>}
1条答案
按热度按时间vcudknz31#
cc @rolandshoemaker