Я использую эту библиотеку в Go (на OSX) для взаимодействия с DNS-сервером Windows.
При запуске приведенного ниже фрагмента я получаю сообщение об ошибке нулевого терминатора.
$ ~/go/bin/winrm-dns-client create -d domain.com -n node-0 -t A -v 10.90.61.30
2018/06/03 12:40:22 Error creating DNS record: Reading record: Reading record: Unmarshalling response: Unmarshalling json: invalid character '\x00' after array element
Я подозреваю, что добавлен нулевой терминатор здесь , когда вспомогательный метод вызывает sprintf
для объединения ответов json в массив.
Однако дажепосле добавления bytes.Trim
, как показано ниже ... Я все еще получаю ошибку нулевого терминатора, и кажется, что нулевой терминатор все еще существует ...
func unmarshalResponse(resp string) ([]interface{}, error) {
var data interface{}
byteRespTrim := []byte(resp)
fmt.Print("found a null terminator at -- ")
fmt.Println(bytes.Index(byteRespTrim, []byte("\x00")))
fmt.Print("total length = ")
fmt.Println(len(byteRespTrim))
byteRespTrim = bytes.Trim(byteRespTrim, "\x00")
fmt.Print("after trim found a null terminator at -- ")
loc := bytes.Index(byteRespTrim, []byte("\x00"))
fmt.Print(loc)
При вызове я получаю следующее
(master)⚡ % ./windows-dns-test create -d domain.com -n openshift-node-0 -t A -v 10.90.61.30
found a null terminator at -- 2102
total length = 2615
after trim found a null terminator at -- 2102