perf: sync protocol and core hardening updates
This commit is contained in:
parent
152fed3b87
commit
4390ebf5a9
283 changed files with 29231 additions and 2295 deletions
43
internal/compat/layerwire/routable_test.go
Normal file
43
internal/compat/layerwire/routable_test.go
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
package layerwire
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/gotd/td/bin"
|
||||
"github.com/gotd/td/tg"
|
||||
)
|
||||
|
||||
func TestValidateRoutableRequestCompatibilityAndUnknown(t *testing.T) {
|
||||
t.Run("legacy theme is fully walked", func(t *testing.T) {
|
||||
var b bin.Buffer
|
||||
b.PutID(0x8d9d742b)
|
||||
b.PutString("android")
|
||||
(&tg.InputThemeSlug{Slug: "night"}).Encode(&b)
|
||||
b.PutLong(42)
|
||||
known, err := ValidateRoutableRequest(b.Buf)
|
||||
if err != nil || !known {
|
||||
t.Fatalf("legacy theme known=%v err=%v, want true/nil", known, err)
|
||||
}
|
||||
|
||||
b.Buf = b.Buf[:len(b.Buf)-4]
|
||||
known, err = ValidateRoutableRequest(b.Buf)
|
||||
if !known || !errors.Is(err, ErrMalformed) {
|
||||
t.Fatalf("truncated legacy theme known=%v err=%v, want true/malformed", known, err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("unknown stays opaque and bounded", func(t *testing.T) {
|
||||
var b bin.Buffer
|
||||
b.PutID(0x12345678)
|
||||
b.PutUint32(0xffffffff)
|
||||
known, err := ValidateRoutableRequest(b.Buf)
|
||||
if err != nil || known {
|
||||
t.Fatalf("opaque unknown known=%v err=%v, want false/nil", known, err)
|
||||
}
|
||||
known, err = ValidateRoutableRequest(append(b.Buf, 1))
|
||||
if known || !errors.Is(err, ErrMalformed) {
|
||||
t.Fatalf("unaligned unknown known=%v err=%v, want false/malformed", known, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue