]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg: DxeUdpIoLib: fix non-empty payload path in UDP reception
authorLaszlo Ersek <lersek@redhat.com>
Sun, 3 Apr 2016 09:48:43 +0000 (11:48 +0200)
committerLaszlo Ersek <lersek@redhat.com>
Mon, 4 Apr 2016 11:53:12 +0000 (13:53 +0200)
Commit 1b31acb66c02 ("MdeModulePkg: Check received packet size before use
it.") introduced a chunk of code under the new "Resume" label, in function
UdpIoOnDgramRcvdDpc(). The new code is supposed to run only when the
received packet has zero-length payload, but a "return" statement was
forgotten, and the code is reached on the normal (nonzero-length payload)
path as well, after the packet has been processed (and possibly freed) by
RxToken->CallBack(). This is a logic bug, with the direct symptom being
use-after-free / General Protection Fault.

Cc: Siyuan Fu <siyuan.fu@intel.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Ting Ye <ting.ye@intel.com>
Cc: "Subramanian, Sriram (EG Servers Platform SW)" <sriram-s@hpe.com>
Fixes: 1b31acb66c026f2791c959a4ec9b55c04d583c22
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c

index 4f7126d3ce56e8514764e296e0981f22d2a4c904..4861095435e6b13eadd2d83856219addb2344b8d 100644 (file)
@@ -303,6 +303,7 @@ UdpIoOnDgramRcvdDpc (
   }\r
 \r
   RxToken->CallBack (Netbuf, &EndPoint, EFI_SUCCESS, RxToken->Context);\r
+  return;\r
 \r
 Resume:\r
   if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) {\r