From bef2242a3551558bbd513bd80acb5ab960156b20 Mon Sep 17 00:00:00 2001 From: wfurt Date: Tue, 12 Jun 2018 03:58:25 +0000 Subject: [PATCH] fix dereferencing uninitialized byte array in case recv() fails --- .../src/System/Net/Sockets/SocketPal.Unix.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs b/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs index da0bab6b1bc6..2f1f97c55be3 100644 --- a/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs +++ b/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs @@ -380,14 +380,15 @@ private static unsafe int ReceiveMessageFrom(SafeCloseSocket socket, SocketFlags receivedFlags = messageHeader.Flags; sockAddrLen = messageHeader.SocketAddressLen; - ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6); } if (errno != Interop.Error.SUCCESS) { + ipPacketInformation = default(IPPacketInformation); return -1; } + ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6); socketAddressLen = sockAddrLen; return checked((int)received); } @@ -442,15 +443,16 @@ private static unsafe int ReceiveMessageFrom( receivedFlags = messageHeader.Flags; int sockAddrLen = messageHeader.SocketAddressLen; - ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6); if (errno == Interop.Error.SUCCESS) { + ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6); socketAddressLen = sockAddrLen; return checked((int)received); } else { + ipPacketInformation = default(IPPacketInformation); return -1; } }