diff options
author | Shelikhoo <xiaokangwang@outlook.com> | 2022-05-18 12:19:21 +0100 |
---|---|---|
committer | Shelikhoo <xiaokangwang@outlook.com> | 2022-06-16 14:06:58 +0100 |
commit | 8ab45651d094de98ff48c5900e6de50a74a0f867 (patch) | |
tree | d421147734b2d5f511de570c7aa0ead455921b57 /broker | |
parent | c5e5b45b062098389c22710745ae2f7372d299e4 (diff) | |
download | snowflake-8ab45651d094de98ff48c5900e6de50a74a0f867.tar.gz snowflake-8ab45651d094de98ff48c5900e6de50a74a0f867.zip |
Disallow unknown bridge list file field
Diffstat (limited to 'broker')
-rw-r--r-- | broker/bridge-list.go | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/broker/bridge-list.go b/broker/bridge-list.go index ca2c041..8a80f6a 100644 --- a/broker/bridge-list.go +++ b/broker/bridge-list.go @@ -2,11 +2,13 @@ package main import ( "bufio" + "bytes" "encoding/json" "errors" - "git.torproject.org/pluggable-transports/snowflake.git/v2/common/bridgefingerprint" "io" "sync" + + "git.torproject.org/pluggable-transports/snowflake.git/v2/common/bridgefingerprint" ) var ErrBridgeNotFound = errors.New("bridge not found") @@ -50,7 +52,9 @@ func (h *bridgeListHolder) LoadBridgeInfo(reader io.Reader) error { for inputScanner.Scan() { inputLine := inputScanner.Bytes() bridgeInfo := BridgeInfo{} - if err := json.Unmarshal(inputLine, &bridgeInfo); err != nil { + decoder := json.NewDecoder(bytes.NewReader(inputLine)) + decoder.DisallowUnknownFields() + if err := decoder.Decode(&bridgeInfo); err != nil { return err } |