From 9287b9fb5e4cb84e9e0f883af8eff66cff3e74e8 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 14 Nov 2023 15:45:47 -0300 Subject: [PATCH] accept > 2 items on EOSE and NOTICE envelopes, but ignore them. fixes https://github.com/nbd-wtf/go-nostr/issues/110 --- envelopes.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/envelopes.go b/envelopes.go index 52b3463..34a6e3f 100644 --- a/envelopes.go +++ b/envelopes.go @@ -200,13 +200,11 @@ func (_ NoticeEnvelope) Label() string { return "NOTICE" } func (v *NoticeEnvelope) UnmarshalJSON(data []byte) error { r := gjson.ParseBytes(data) arr := r.Array() - switch len(arr) { - case 2: - *v = NoticeEnvelope(arr[1].Str) - return nil - default: + if len(arr) < 2 { return fmt.Errorf("failed to decode NOTICE envelope") } + *v = NoticeEnvelope(arr[1].Str) + return nil } func (v NoticeEnvelope) MarshalJSON() ([]byte, error) { @@ -224,13 +222,11 @@ func (_ EOSEEnvelope) Label() string { return "EOSE" } func (v *EOSEEnvelope) UnmarshalJSON(data []byte) error { r := gjson.ParseBytes(data) arr := r.Array() - switch len(arr) { - case 2: - *v = EOSEEnvelope(arr[1].Str) - return nil - default: + if len(arr) < 2 { return fmt.Errorf("failed to decode EOSE envelope") } + *v = EOSEEnvelope(arr[1].Str) + return nil } func (v EOSEEnvelope) MarshalJSON() ([]byte, error) {