Просмотр исходного кода

WebSocket: Fix bad payload length computation

This caused payloads bigger than 125 bytes (using extended lenght coding)
to be randomly truncated.
Marc Capdevielle 8 лет назад
Родитель
Сommit
bf31aad8b3
1 измененных файлов с 8 добавлено и 8 удалено
  1. 8 8
      Sources/WebSockets.swift

+ 8 - 8
Sources/WebSockets.swift

@@ -250,17 +250,17 @@ public class WebSocketSession: Hashable, Equatable  {
         }
         }
         var len = UInt64(sec & 0x7F)
         var len = UInt64(sec & 0x7F)
         if len == 0x7E {
         if len == 0x7E {
-            let b0 = UInt64(try socket.read() << 8)
+            let b0 = UInt64(try socket.read()) << 8
             let b1 = UInt64(try socket.read())
             let b1 = UInt64(try socket.read())
             len = UInt64(littleEndian: b0 | b1)
             len = UInt64(littleEndian: b0 | b1)
         } else if len == 0x7F {
         } else if len == 0x7F {
-            let b0 = UInt64(try socket.read() << 54)
-            let b1 = UInt64(try socket.read() << 48)
-            let b2 = UInt64(try socket.read() << 40)
-            let b3 = UInt64(try socket.read() << 32)
-            let b4 = UInt64(try socket.read() << 24)
-            let b5 = UInt64(try socket.read() << 16)
-            let b6 = UInt64(try socket.read() << 8)
+            let b0 = UInt64(try socket.read()) << 54
+            let b1 = UInt64(try socket.read()) << 48
+            let b2 = UInt64(try socket.read()) << 40
+            let b3 = UInt64(try socket.read()) << 32
+            let b4 = UInt64(try socket.read()) << 24
+            let b5 = UInt64(try socket.read()) << 16
+            let b6 = UInt64(try socket.read()) << 8
             let b7 = UInt64(try socket.read())
             let b7 = UInt64(try socket.read())
             len = UInt64(littleEndian: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7)
             len = UInt64(littleEndian: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7)
         }
         }