From 72b3f3779bbadee33c171b949a7b81b19288144c Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 8 Aug 2017 12:16:17 -0400 Subject: [PATCH] Discard GroupInfoRequest from unknown group // FREEBIE --- .../ViewControllers/DebugUI/DebugUIMessages.m | 17 +++++++++++++++++ .../src/Messages/TSMessagesManager.m | 13 ++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index 8e2e5e312..6ed15e8ff 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -8,10 +8,12 @@ #import "OWSTableViewController.h" #import "Signal-Swift.h" #import "ThreadUtil.h" +#import <25519/Randomness.h> #import #import #import #import +#import #import #import #import @@ -201,6 +203,21 @@ NS_ASSUME_NONNULL_BEGIN actionBlock:^{ [DebugUIMessages sendTextAndSystemMessages:1000 thread:thread]; }], + [OWSTableItem + itemWithTitle:@"Request Bogus group info" + actionBlock:^{ + DDLogInfo(@"%@ Requesting bogus group info for thread: %@", self.tag, thread); + OWSSyncGroupsRequestMessage *syncGroupsRequestMessage = + [[OWSSyncGroupsRequestMessage alloc] initWithThread:thread + groupId:[Randomness generateRandomBytes:16]]; + [[Environment getCurrent].messageSender sendMessage:syncGroupsRequestMessage + success:^{ + DDLogWarn(@"%@ Successfully sent Request Group Info message.", self.tag); + } + failure:^(NSError *error) { + DDLogError(@"%@ Failed to send Request Group Info message with error: %@", self.tag, error); + }]; + }], ] mutableCopy]; if ([thread isKindOfClass:[TSContactThread class]]) { TSContactThread *contactThread = (TSContactThread *)thread; diff --git a/SignalServiceKit/src/Messages/TSMessagesManager.m b/SignalServiceKit/src/Messages/TSMessagesManager.m index 334b43f5d..d3f7aff7c 100644 --- a/SignalServiceKit/src/Messages/TSMessagesManager.m +++ b/SignalServiceKit/src/Messages/TSMessagesManager.m @@ -520,16 +520,23 @@ NS_ASSUME_NONNULL_BEGIN } if (dataMessage.hasGroup) { - __block BOOL ignoreMessage = NO; + __block BOOL unknownGroup = NO; [self.dbConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { TSGroupModel *emptyModelToFillOutId = [[TSGroupModel alloc] initWithTitle:nil memberIds:nil image:nil groupId:dataMessage.group.id]; TSGroupThread *gThread = [TSGroupThread threadWithGroupModel:emptyModelToFillOutId transaction:transaction]; if (gThread == nil && dataMessage.group.type != OWSSignalServiceProtosGroupContextTypeUpdate) { - ignoreMessage = YES; + unknownGroup = YES; } }]; - if (ignoreMessage) { + if (unknownGroup) { + if (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeRequestInfo) { + DDLogInfo(@"%@ Ignoring group info request for group I don't know about from: %@", + self.tag, + incomingEnvelope.source); + return; + } + // FIXME: https://github.com/WhisperSystems/Signal-iOS/issues/1340 DDLogInfo(@"%@ Received message from group that I left or don't know about from: %@.", self.tag,