daodst / daodst/blockchain

x/tx/signing/textual/internal/cbor encodes different values to the same bytes

Open
#56 0 comments 0 reactions 1 assignee Claimed by @carluchou View on GitHub
Dominant language
Go
Stars
116
Forks
16
PR merge metrics
No merged PRs in 30d

Description

Add the following test to x/tx/signing/textual/internal/cbor

`

package cbor

import (
"bytes"
"fmt"
"io"
"testing"
)
type CborString string

func (s CborString) Encode(w io.Writer) error { _, err := fmt.Fprint(w, s); return err }

func TestProblem(t *testing.T) {

var b1 bytes.Buffer

if err := NewMap(
Entry{key: CborString("abc"), val: CborString("def")},
Entry{key: CborString("ghi"), val: CborString("jkl")},
).Encode(&b1); err != nil {
t.Fatal(err)
}

t.Logf("b1: %X", b1.Bytes())

var b2 bytes.Buffer

if err := NewMap(
Entry{key: CborString("abcde"), val: CborString("fgh")},
Entry{key: CborString("ij"), val: CborString("kl")},
).Encode(&b2); err != nil {
t.Fatal(err)
}

t.Logf("b2: %X", b2.Bytes())

if bytes.Equal(b1.Bytes(), b2.Bytes()) {
t.Fatal("different values have the same encoding")
}
}

`

The following output is produced.

`

=== RUN TestProblem
/var/folders/zv/58xqkvpj5zj2rygfqdrh6nnc0000gn/T/tmp.ls30yTJG/cbor_test.go:27: b1: A26162636465666768696A6B6C
/var/folders/zv/58xqkvpj5zj2rygfqdrh6nnc0000gn/T/tmp.ls30yTJG/cbor_test.go:28: b2: A26162636465666768696A6B6C
/var/folders/zv/58xqkvpj5zj2rygfqdrh6nnc0000gn/T/tmp.ls30yTJG/cbor_test.go:31: different values have the same encoding

`

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.