diff --git a/control/controlclient/direct.go b/control/controlclient/direct.go index 3bd7208b8..cdc6d6920 100644 --- a/control/controlclient/direct.go +++ b/control/controlclient/direct.go @@ -791,6 +791,8 @@ func decode(res *http.Response, v interface{}, serverKey *wgcfg.Key, mkey *wgcfg var debugMap, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_MAP")) +var jsonEscapedZero = []byte(`\u0000`) + func (c *Direct) decodeMsg(msg []byte, v interface{}) error { c.mu.Lock() serverKey := c.serverKey @@ -819,6 +821,10 @@ func (c *Direct) decodeMsg(msg []byte, v interface{}) error { json.Indent(&buf, b, "", " ") log.Printf("MapResponse: %s", buf.Bytes()) } + + if bytes.Contains(b, jsonEscapedZero) { + log.Printf("[unexpected] zero byte in controlclient.Direct.decodeMsg into %T: %q", v, b) + } if err := json.Unmarshal(b, v); err != nil { return fmt.Errorf("response: %v", err) } @@ -831,6 +837,9 @@ func decodeMsg(msg []byte, v interface{}, serverKey *wgcfg.Key, mkey *wgcfg.Priv if err != nil { return err } + if bytes.Contains(decrypted, jsonEscapedZero) { + log.Printf("[unexpected] zero byte in controlclient decodeMsg into %T: %q", v, decrypted) + } if err := json.Unmarshal(decrypted, v); err != nil { return fmt.Errorf("response: %v", err) }