From: Matt Joiner Date: Mon, 26 Jun 2023 09:48:23 +0000 (+1000) Subject: Fix error unmarshalling bad metainfo nodes field X-Git-Url: http://www.git.stargrave.org/?p=btrtrc.git;a=commitdiff_plain;h=050e5cbab8e26a9b28e57a7bc2a964b6d2ceb899 Fix error unmarshalling bad metainfo nodes field --- diff --git a/metainfo/metainfo.go b/metainfo/metainfo.go index cd787260..fbf48671 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -10,10 +10,10 @@ import ( ) type MetaInfo struct { - InfoBytes bencode.Bytes `bencode:"info,omitempty"` // BEP 3 - Announce string `bencode:"announce,omitempty"` // BEP 3 - AnnounceList AnnounceList `bencode:"announce-list,omitempty"` // BEP 12 - Nodes []Node `bencode:"nodes,omitempty"` // BEP 5 + InfoBytes bencode.Bytes `bencode:"info,omitempty"` // BEP 3 + Announce string `bencode:"announce,omitempty"` // BEP 3 + AnnounceList AnnounceList `bencode:"announce-list,omitempty"` // BEP 12 + Nodes []Node `bencode:"nodes,omitempty,ignore_unmarshal_type_error"` // BEP 5 // Where's this specified? Mentioned at // https://wiki.theory.org/index.php/BitTorrentSpecification: (optional) the creation time of // the torrent, in standard UNIX epoch format (integer, seconds since 1-Jan-1970 00:00:00 UTC) diff --git a/metainfo/metainfo_test.go b/metainfo/metainfo_test.go index ee01c505..d1a6c356 100644 --- a/metainfo/metainfo_test.go +++ b/metainfo/metainfo_test.go @@ -153,3 +153,11 @@ func TestStringCreationDate(t *testing.T) { var mi MetaInfo assert.NoError(t, bencode.Unmarshal([]byte("d13:creation date23:29.03.2018 22:18:14 UTC4:infodee"), &mi)) } + +// See https://github.com/anacrolix/torrent/issues/843. +func TestUnmarshalEmptyStringNodes(t *testing.T) { + var mi MetaInfo + c := qt.New(t) + err := bencode.Unmarshal([]byte("d5:nodes0:e"), &mi) + c.Assert(err, qt.IsNil) +}