Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 28506b2

Browse files
authored
fix dereferencing uninitialized byte array in case recv() fails (#30312) (#30676)
1 parent 59b1d9a commit 28506b2

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,14 +380,15 @@ private static unsafe int ReceiveMessageFrom(SafeCloseSocket socket, SocketFlags
380380

381381
receivedFlags = messageHeader.Flags;
382382
sockAddrLen = messageHeader.SocketAddressLen;
383-
ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6);
384383
}
385384

386385
if (errno != Interop.Error.SUCCESS)
387386
{
387+
ipPacketInformation = default(IPPacketInformation);
388388
return -1;
389389
}
390390

391+
ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6);
391392
socketAddressLen = sockAddrLen;
392393
return checked((int)received);
393394
}
@@ -442,15 +443,16 @@ private static unsafe int ReceiveMessageFrom(
442443

443444
receivedFlags = messageHeader.Flags;
444445
int sockAddrLen = messageHeader.SocketAddressLen;
445-
ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6);
446446

447447
if (errno == Interop.Error.SUCCESS)
448448
{
449+
ipPacketInformation = GetIPPacketInformation(&messageHeader, isIPv4, isIPv6);
449450
socketAddressLen = sockAddrLen;
450451
return checked((int)received);
451452
}
452453
else
453454
{
455+
ipPacketInformation = default(IPPacketInformation);
454456
return -1;
455457
}
456458
}

0 commit comments

Comments
 (0)