mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-10 18:59:41 +02:00
Create accurate filter for matching on from address (SMACK-71)
Smack contains two PacketFilters to filter on the from address. FromContainsFilter simply does a substring match, which is problematic as explained in SMACK-71. FromMatchesFilter partially fixes this weakness, but it still uses String#startsWith to filter on bare addresses. For example, when setup to match all JIDs with bare JID "foo@example.co", it will still match "foo@example.com". This commit changes FromMatchesFilter to test equality with the bare from instead of startsWith with the full from. Moreover, we convert all uses of FromContainsFilter to FromMatchesFilter and remove FromContainsFilter. Additionally, the unused ToContainsFilter (which as the same weaknesses) is removed, too.
This commit is contained in:
parent
0e49b23687
commit
980047c4e1
7 changed files with 14 additions and 120 deletions
|
@ -262,7 +262,7 @@ public class AgentSession {
|
|||
presence.addExtension(new DefaultPacketExtension(AgentStatus.ELEMENT_NAME,
|
||||
AgentStatus.NAMESPACE));
|
||||
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class), new FromContainsFilter(workgroupJID)));
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class), new FromMatchesFilter(workgroupJID)));
|
||||
|
||||
connection.sendPacket(presence);
|
||||
|
||||
|
@ -359,7 +359,7 @@ public class AgentSession {
|
|||
presence.addExtension(agentStatus);
|
||||
presence.addExtension(new MetaData(this.metaData));
|
||||
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class), new FromContainsFilter(workgroupJID)));
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class), new FromMatchesFilter(workgroupJID)));
|
||||
|
||||
this.connection.sendPacket(presence);
|
||||
|
||||
|
@ -402,7 +402,7 @@ public class AgentSession {
|
|||
presence.addExtension(new MetaData(this.metaData));
|
||||
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class),
|
||||
new FromContainsFilter(workgroupJID)));
|
||||
new FromMatchesFilter(workgroupJID)));
|
||||
|
||||
this.connection.sendPacket(presence);
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ public class Workgroup {
|
|||
Presence directedPresence = new Presence(Presence.Type.available);
|
||||
directedPresence.setTo(workgroupJID);
|
||||
PacketFilter typeFilter = new PacketTypeFilter(Presence.class);
|
||||
PacketFilter fromFilter = new FromContainsFilter(workgroupJID);
|
||||
PacketFilter fromFilter = new FromMatchesFilter(workgroupJID);
|
||||
PacketCollector collector = connection.createPacketCollector(new AndFilter(fromFilter,
|
||||
typeFilter));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue