Prevent crash in avatar code (#133)

* Prevent crash on empty urn:xmpp:avatar:* nodes

* Fix issue with errors

* Add a test for empty avatar pubsub items
This commit is contained in:
Polynomdivision
2021-10-29 15:14:15 +00:00
committed by GitHub
parent 3871461df9
commit 912ba61489
2 changed files with 36 additions and 0 deletions
+12
View File
@@ -653,6 +653,10 @@ func (c *Client) Recv() (stanza interface{}, err error) {
// Handle Pubsub notifications
switch v.Event.Items.Node {
case XMPPNS_AVATAR_PEP_METADATA:
if len(v.Event.Items.Items) == 0 {
return AvatarMetadata{}, errors.New("No avatar metadata items available")
}
return handleAvatarMetadata(v.Event.Items.Items[0].Body,
v.From)
// I am not sure whether this can even happen.
@@ -765,10 +769,18 @@ func (c *Client) Recv() (stanza interface{}, err error) {
switch p.Node {
case XMPPNS_AVATAR_PEP_DATA:
if len(p.Items) == 0 {
return AvatarData{}, errors.New("No avatar data items available")
}
return handleAvatarData(p.Items[0].Body,
v.From,
p.Items[0].ID)
case XMPPNS_AVATAR_PEP_METADATA:
if len(p.Items) == 0 {
return AvatarMetadata{}, errors.New("No avatar metadata items available")
}
return handleAvatarMetadata(p.Items[0].Body,
v.From)
default: