From 06645eaa8c1f1a1d70892d0d78d8913dd9f11ce7 Mon Sep 17 00:00:00 2001 From: Bohdan Horbeshko Date: Fri, 27 Jun 2025 15:43:29 -0400 Subject: [PATCH] Return bad-request for disco attempts on MUC occupants --- xmpp/handlers.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/xmpp/handlers.go b/xmpp/handlers.go index 0e4b893..206e93e 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -916,6 +916,14 @@ func handleGetDiscoInfo(s xmpp.Sender, iq *stanza.IQ, di *stanza.DiscoInfo) { answer.Payload = disco toID, toOk, toIsGroup := toToID(iq.To) + if toIsGroup { + toJid, err := stanza.NewJid(iq.To) + if err == nil && toJid.Resource != "" { + iqAnswerSetError(answer, 400) + return + } + } + if di.Node == "" { var isMuc bool bare, _, fromOk := gateway.SplitJID(iq.From) @@ -1033,7 +1041,15 @@ func handleGetDiscoItems(s xmpp.Sender, iq *stanza.IQ, di *stanza.DiscoItems) { log.Debugf("discoItems: %#v", di) - toID, toOk, _ := toToID(iq.To) + toID, toOk, toIsGroup := toToID(iq.To) + + if toIsGroup { + toJid, err := stanza.NewJid(iq.To) + if err == nil && toJid.Resource != "" { + iqAnswerSetError(answer, 400) + return + } + } disco := answer.DiscoItems()