diff --git a/SignalServiceKit/src/Loki/Messaging/ContactParser.swift b/SignalServiceKit/src/Loki/Messaging/ContactParser.swift index 384e20bfc..7b3dea666 100644 --- a/SignalServiceKit/src/Loki/Messaging/ContactParser.swift +++ b/SignalServiceKit/src/Loki/Messaging/ContactParser.swift @@ -10,8 +10,11 @@ var index = 0 var result: [String] = [] while index < data.endIndex { - let uncheckedSize: UInt32? = try? data[index..<(index+4)].withUnsafeBytes { $0.pointee } - guard let size = uncheckedSize else { break } + var uncheckedSize: UInt32? = try? data[index..<(index+4)].withUnsafeBytes { $0.pointee } + if let size = uncheckedSize, size >= data.count, let intermediate = try? data[index..<(index+4)].reversed() { + uncheckedSize = Data(intermediate).withUnsafeBytes { $0.pointee } + } + guard let size = uncheckedSize, size < data.count else { break } let sizeAsInt = Int(size) index += 4 guard index + sizeAsInt < data.count else { break }