mirror of
https://github.com/FluuxIO/go-xmpp.git
synced 2026-05-24 04:43:47 -07:00
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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user