diff --git a/control/controlclient/direct.go b/control/controlclient/direct.go index 7dce00901..72ea0b4ba 100644 --- a/control/controlclient/direct.go +++ b/control/controlclient/direct.go @@ -796,6 +796,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 @@ -824,6 +826,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) } @@ -836,6 +842,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) }