pkg/web: avoid shared middleware slice (#58458)

This commit is contained in:
Emil Tullstedt 2022-11-08 16:58:04 +01:00 committed by GitHub
parent 2e6761b4e4
commit 75701695d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -144,8 +144,14 @@ func mwFromHandler(handler Handler) Middleware {
}
func (m *Macaron) createContext(rw http.ResponseWriter, req *http.Request) *Context {
// NOTE: we have to explicitly copy the middleware chain here to avoid
// passing a shared slice to the *Context, which leads to racy behavior in
// case of later appends
mws := make([]Middleware, len(m.mws))
copy(mws, m.mws)
c := &Context{
mws: m.mws,
mws: mws,
Resp: NewResponseWriter(req.Method, rw),
}