mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-03 21:16:35 +00:00
Merge branches 'master' and 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
commit
e0d86049f7
@ -727,27 +727,57 @@ public final class PostboxDecoder {
|
||||
case .Double:
|
||||
offset += 8
|
||||
case .String:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength)
|
||||
case .Object:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(length)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(valueLength)
|
||||
case .Int32Array:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length) * 4
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength) * 4
|
||||
case .Int64Array:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length) * 8
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength) * 8
|
||||
case .ObjectArray:
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var subLength: Int32 = 0
|
||||
memcpy(&subLength, bytes + offset, 4)
|
||||
offset += 4
|
||||
var i: Int32 = 0
|
||||
while i < subLength {
|
||||
if offset + 4 + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var objectLength: Int32 = 0
|
||||
memcpy(&objectLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(objectLength)
|
||||
@ -759,32 +789,62 @@ public final class PostboxDecoder {
|
||||
}
|
||||
return true
|
||||
case .ObjectDictionary:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4
|
||||
var i: Int32 = 0
|
||||
while i < length {
|
||||
while i < valueLength {
|
||||
if offset + 4 + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var keyLength: Int32 = 0
|
||||
memcpy(&keyLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(keyLength)
|
||||
|
||||
if offset + 4 + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(valueLength)
|
||||
i += 1
|
||||
}
|
||||
case .Bytes:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength)
|
||||
case .Nil:
|
||||
break
|
||||
case .StringArray, .BytesArray:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4
|
||||
var i: Int32 = 0
|
||||
while i < length {
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var stringLength: Int32 = 0
|
||||
memcpy(&stringLength, bytes + offset, 4)
|
||||
offset += 4 + Int(stringLength)
|
||||
|
||||
@ -235,7 +235,7 @@ private class AdMessagesHistoryContextImpl {
|
||||
|
||||
messagePeers[author.id] = author
|
||||
|
||||
let messageHash = (self.text.hashValue &+ 31 &* peerId.hashValue) &* 31 + author.id.hashValue
|
||||
let messageHash = (self.text.hashValue &+ 31 &* peerId.hashValue) &* 31 &+ author.id.hashValue
|
||||
let messageStableVersion = UInt32(bitPattern: Int32(truncatingIfNeeded: messageHash))
|
||||
|
||||
return Message(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user