all: use case-sensitive JSON unmarshaling (#807)
As reported in https://github.com/modelcontextprotocol/go-sdk/issues/805, case insensitive unmarshaling can pose security issues. This change adjusts all non-test and non-example unmarshaling to use a case sensitive mode. This introduces a new external dependency `github.com/segmentio/encoding`.
This commit is contained in:
parent
9600c3bd31
commit
7b8d81c264
1 changed files with 134 additions and 25 deletions
19
internal/json/json.go
Normal file
19
internal/json/json.go
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
|
||||
// Use of this source code is governed by the license
|
||||
// that can be found in the LICENSE file.
|
||||
|
||||
// Package json provides internal JSON utilities.
|
||||
|
||||
package json
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/segmentio/encoding/json"
|
||||
)
|
||||
|
||||
func Unmarshal(data []byte, v any) error {
|
||||
dec := json.NewDecoder(bytes.NewReader(data))
|
||||
dec.DontMatchCaseInsensitiveStructFields()
|
||||
return dec.Decode(v)
|
||||
}
|
||||
Loading…
Reference in a new issue