From cfe435bcd1c65294d5806257ce0e802aef426d12 Mon Sep 17 00:00:00 2001 From: Ryan ZHAO Date: Thu, 13 Feb 2020 13:54:20 +1100 Subject: [PATCH] fix group parser --- SignalServiceKit/src/Devices/OWSGroupsOutputStream.m | 12 ++++++------ .../src/Loki/Messaging/GroupParser.swift | 2 +- SignalServiceKit/src/Messages/OWSMessageManager.m | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m b/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m index ba323f7ae..fe14f15c3 100644 --- a/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m +++ b/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN if ([OWSBlockingManager.sharedManager isGroupIdBlocked:group.groupId]) { [groupBuilder setBlocked:YES]; } - + /* NSData *avatarPng; if (group.groupImage) { SSKProtoGroupDetailsAvatarBuilder *avatarBuilder = [SSKProtoGroupDetailsAvatar builder]; @@ -47,7 +47,7 @@ NS_ASSUME_NONNULL_BEGIN } else { [groupBuilder setAvatar:avatarProto]; } - } + } */ OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration = [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:groupThread.uniqueId transaction:transaction]; @@ -70,12 +70,12 @@ NS_ASSUME_NONNULL_BEGIN uint32_t groupDataLength = (uint32_t)groupData.length; - [self writeVariableLengthUInt32:groupDataLength]; + [self writeUInt32:groupDataLength]; [self writeData:groupData]; - if (avatarPng) { - [self writeData:avatarPng]; - } +// if (avatarPng) { +// [self writeData:avatarPng]; +// } } @end diff --git a/SignalServiceKit/src/Loki/Messaging/GroupParser.swift b/SignalServiceKit/src/Loki/Messaging/GroupParser.swift index 6afa2386a..3c3fd68b1 100644 --- a/SignalServiceKit/src/Loki/Messaging/GroupParser.swift +++ b/SignalServiceKit/src/Loki/Messaging/GroupParser.swift @@ -17,7 +17,7 @@ guard let size = uncheckedSize, size < data.count else { break } let sizeAsInt = Int(size) index += 4 - guard index + sizeAsInt < data.count else { break } + guard index + sizeAsInt <= data.count else { break } let protoAsData = data[index..<(index+sizeAsInt)] guard let proto = try? SSKProtoGroupDetails.parseData(protoAsData) else { break } index += sizeAsInt diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index e5b0d14e4..109561c1c 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1110,7 +1110,7 @@ NS_ASSUME_NONNULL_BEGIN GroupParser *parser = [[GroupParser alloc] initWithData:data]; NSArray *groupModels = [parser parseGroupModels]; for (TSGroupModel *groupModel in groupModels) { - TSGroupThread *thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel]; + TSGroupThread *thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction]; [self establishSessionsWithMembersIfNeeded:groupModel.groupMemberIds forThread:thread transaction:transaction]; } }