[Standards] The Nasal Demons of MUC Avatars (XEP-0045 + XEP-0153 = Null Pointer Exception)

Georg Lukas georg at op-co.de
Mon May 14 14:21:20 UTC 2018


a recent upgrade of some large ejabberd deployment made yaxim crash with
a Null Pointer Exception when opening the participant list of a MUC.

Further analysis has shown that the misbehavior is caused by the legacy
XMPP library I'm using interpreting the following stanza as a
participant presence from a nameless participant, and later crashing on
its namelessness:

	<presence to="georg at yax.im/yaxim.xyz" from="conversations at conference.siacs.eu">
	  <x xmlns="vcard-temp:x:update">
	  <c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.process-one.net/en/ejabberd/" ver="eREyFCXd9aWVtXD7yPXJuVsFbKo="/>

In the context of XEP-0045, presence-from-the-MUC-bare-JID is undefined
behavior, so it is causing nasal demons [0] here.

While technically, this stanza does not contain the participant-tagging
`x{http://jabber.org/protocol/muc#user}` element, it *can* be
interpreted as a valid GC1.0 participant presence originating from a
nameless participant by a client supporting legacy GC1.0 protocol [1].

This is probably the interpretation taken both by yaxim[2] and by
poezio, which helpfully shows the nameless participant at the end of
the participant list.

To solve this misconception, I suggest two specific action items to be

- make[3] whoever is responsible for this write a short XEP / update
  0045 / update 0153 to reflect this new use case.

- burn GC1.0 with fire and dance around the pyre.


[0] http://www.catb.org/jargon/html/N/nasal-demons.html
[1] https://web.archive.org/web/20000919185743/http://docs.jabber.org:80/jpg/x273.html
[2] a.k.a. I don't want to admit that my codebase is rotten.
[3] make = kindly ask.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://mail.jabber.org/pipermail/standards/attachments/20180514/f67862e7/attachment.sig>

More information about the Standards mailing list