aboutsummaryrefslogtreecommitdiff
path: root/broker
diff options
context:
space:
mode:
authorShelikhoo <xiaokangwang@outlook.com>2022-05-18 12:19:21 +0100
committerShelikhoo <xiaokangwang@outlook.com>2022-06-16 14:06:58 +0100
commit8ab45651d094de98ff48c5900e6de50a74a0f867 (patch)
treed421147734b2d5f511de570c7aa0ead455921b57 /broker
parentc5e5b45b062098389c22710745ae2f7372d299e4 (diff)
downloadsnowflake-8ab45651d094de98ff48c5900e6de50a74a0f867.tar.gz
snowflake-8ab45651d094de98ff48c5900e6de50a74a0f867.zip
Disallow unknown bridge list file field
Diffstat (limited to 'broker')
-rw-r--r--broker/bridge-list.go8
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
}