From a5ef5f944ac6325bc555d9407b7460089e69a36c Mon Sep 17 00:00:00 2001 From: Pieter van Ginkel Date: Wed, 19 Dec 2018 14:50:40 +0100 Subject: [PATCH] Throw an exception if the receive buffer is too small in the NetWebSocket handler. --- src/Owin.WebSocket/Handlers/NetWebSocket.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Owin.WebSocket/Handlers/NetWebSocket.cs b/src/Owin.WebSocket/Handlers/NetWebSocket.cs index e0ca2b3..9c86162 100644 --- a/src/Owin.WebSocket/Handlers/NetWebSocket.cs +++ b/src/Owin.WebSocket/Handlers/NetWebSocket.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; @@ -56,7 +57,10 @@ public Task Send(ArraySegment data, WebSocketMessageType messageType, bool public Task Close(WebSocketCloseStatus closeStatus, string closeDescription, CancellationToken cancelToken) { - return mWebSocket.CloseAsync(closeStatus, closeDescription, cancelToken); + using (mWebSocket) + { + return mWebSocket.CloseAsync(closeStatus, closeDescription, cancelToken); + } } public async Task, WebSocketMessageType>> ReceiveMessage(byte[] buffer, CancellationToken cancelToken) @@ -65,6 +69,10 @@ public async Task, WebSocketMessageType>> ReceiveMessag WebSocketReceiveResult result; do { + if (count == buffer.Length) + throw new InternalBufferOverflowException( + "The Buffer is to small to get the Websocket Message! Increase in the Constructor!"); + var segment = new ArraySegment(buffer, count, buffer.Length - count); result = await mWebSocket.ReceiveAsync(segment, cancelToken);