Fix contact sync message parsing

pull/63/head
Niels Andriesse 6 years ago
parent dfccd6b9a3
commit b55c751358

@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
// Returns NO on error.
- (BOOL)writeData:(NSData *)data;
- (BOOL)writeUInt32:(UInt32)value;
- (BOOL)writeVariableLengthUInt32:(UInt32)value;
@end

@ -63,6 +63,11 @@ NS_ASSUME_NONNULL_BEGIN
return YES;
}
- (BOOL)writeUInt32:(UInt32)value {
NSData *data = [[NSData alloc] initWithBytes:&value length:sizeof(value)];
return [self writeData:data];
}
- (BOOL)writeVariableLengthUInt32:(UInt32)value
{
while (YES) {

@ -94,7 +94,7 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
}
uint32_t contactDataLength = (uint32_t)contactData.length;
[self writeVariableLengthUInt32:contactDataLength];
[self writeUInt32:contactDataLength];
[self writeData:contactData];
/*

@ -10,11 +10,13 @@
var index = 0
var result: [String] = []
while index < data.endIndex {
let uncheckedSize: Int? = try? data[index..<(index+1)].withUnsafeBytes { $0.pointee }
let uncheckedSize: UInt32? = try? data[index..<(index+4)].withUnsafeBytes { $0.pointee }
guard let size = uncheckedSize else { break }
index += 1
let protoAsData = data[index..<(index+size)]
let sizeAsInt = Int(size)
index += 4
let protoAsData = data[index..<(index+sizeAsInt)]
guard let proto = try? SSKProtoContactDetails.parseData(protoAsData) else { break }
index += sizeAsInt
result.append(proto.number)
}
return result

Loading…
Cancel
Save