ensure that message sender matches endpoint destination and that message is addressed to me

auto-update
Zlatin Balevsky 2021-09-14 21:28:19 +01:00
parent 9c5478b01c
commit d4d8d09e15
No known key found for this signature in database
GPG Key ID: A72832072D525E41
3 changed files with 8 additions and 4 deletions

View File

@ -454,7 +454,7 @@ public class Core {
log.info("initializing acceptor") log.info("initializing acceptor")
I2PAcceptor i2pAcceptor = new I2PAcceptor(i2pSocketManager) I2PAcceptor i2pAcceptor = new I2PAcceptor(i2pSocketManager)
connectionAcceptor = new ConnectionAcceptor(eventBus, connectionManager, props, connectionAcceptor = new ConnectionAcceptor(eventBus, me, connectionManager, props,
i2pAcceptor, hostCache, trustService, searchManager, uploadManager, fileManager, connectionEstablisher, i2pAcceptor, hostCache, trustService, searchManager, uploadManager, fileManager, connectionEstablisher,
certificateManager, chatServer, collectionManager) certificateManager, chatServer, collectionManager)

View File

@ -49,6 +49,7 @@ class ConnectionAcceptor {
private static final int RESULT_BATCH_SIZE = 128 private static final int RESULT_BATCH_SIZE = 128
final EventBus eventBus final EventBus eventBus
final Persona me
final UltrapeerConnectionManager manager final UltrapeerConnectionManager manager
final MuWireSettings settings final MuWireSettings settings
final I2PAcceptor acceptor final I2PAcceptor acceptor
@ -69,12 +70,13 @@ class ConnectionAcceptor {
volatile int browsed volatile int browsed
ConnectionAcceptor(EventBus eventBus, UltrapeerConnectionManager manager, ConnectionAcceptor(EventBus eventBus, Persona me, UltrapeerConnectionManager manager,
MuWireSettings settings, I2PAcceptor acceptor, HostCache hostCache, MuWireSettings settings, I2PAcceptor acceptor, HostCache hostCache,
TrustService trustService, SearchManager searchManager, UploadManager uploadManager, TrustService trustService, SearchManager searchManager, UploadManager uploadManager,
FileManager fileManager, ConnectionEstablisher establisher, CertificateManager certificateManager, FileManager fileManager, ConnectionEstablisher establisher, CertificateManager certificateManager,
ChatServer chatServer, CollectionManager collectionManager) { ChatServer chatServer, CollectionManager collectionManager) {
this.eventBus = eventBus this.eventBus = eventBus
this.me = me
this.manager = manager this.manager = manager
this.settings = settings this.settings = settings
this.acceptor = acceptor this.acceptor = acceptor
@ -725,7 +727,8 @@ class ConnectionAcceptor {
dis = new DataInputStream(new GZIPInputStream(dis)) dis = new DataInputStream(new GZIPInputStream(dis))
count.times { count.times {
MWMessage m = new MWMessage(dis) MWMessage m = new MWMessage(dis)
eventBus.publish(new MessageReceivedEvent(message : m)) if (m.sender.destination == e.destination && m.recipients.contains(me))
eventBus.publish(new MessageReceivedEvent(message : m))
} }
} catch (Exception bad) { } catch (Exception bad) {
log.log(Level.WARNING, "failed to process LETTER", bad) log.log(Level.WARNING, "failed to process LETTER", bad)

View File

@ -1,5 +1,6 @@
package com.muwire.core.connection package com.muwire.core.connection
import com.muwire.core.Personas
import com.muwire.core.hostcache.SimpleHostCache import com.muwire.core.hostcache.SimpleHostCache
import static org.junit.Assert.fail import static org.junit.Assert.fail
@ -96,7 +97,7 @@ class ConnectionAcceptorTest {
uploadManager = uploadManagerMock.proxyInstance() uploadManager = uploadManagerMock.proxyInstance()
connectionEstablisher = connectionEstablisherMock.proxyInstance() connectionEstablisher = connectionEstablisherMock.proxyInstance()
acceptor = new ConnectionAcceptor(eventBus, connectionManager, settings, i2pAcceptor, acceptor = new ConnectionAcceptor(eventBus, null, connectionManager, settings, i2pAcceptor,
hostCache, trustService, searchManager, uploadManager, null, connectionEstablisher, null, null, null) hostCache, trustService, searchManager, uploadManager, null, connectionEstablisher, null, null, null)
acceptor.start() acceptor.start()
Thread.sleep(100) Thread.sleep(100)