Projects
Eulaceura:Mainline:GA
edk2
_service:obs_scm:0037-NetworkPkg-Dhcp6Dxe-Remov...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0037-NetworkPkg-Dhcp6Dxe-Removes-duplicate-check-and-repl.patch of Package edk2
From 665b076fc6082d3e7637c0952e1cf0d4a3104bc7 Mon Sep 17 00:00:00 2001 From: Doug Flick <dougflick@microsoft.com> Date: Tue, 13 Feb 2024 10:46:01 -0800 Subject: [PATCH 17/19] NetworkPkg: Dhcp6Dxe: Removes duplicate check and replaces with macro Removes duplicate check after merge > > // > // Verify the PacketCursor is within the packet > // > if ( (*PacketCursor < Packet->Dhcp6.Option) > || (*PacketCursor >= Packet->Dhcp6.Option + (Packet->Size - sizeof (EFI_DHCP6_HEADER)))) > { > return EFI_INVALID_PARAMETER; > } > Converts the check to a macro and replaces all instances of the check with the macro Cc: Saloni Kasbekar <saloni.kasbekar@intel.com> Cc: Zachary Clark-williams <zachary.clark-williams@intel.com> Signed-off-by: Doug Flick [MSFT] <doug.edk2@gmail.com> Reviewed-by: Saloni Kasbekar <saloni.kasbekar@intel.com> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com> reference: https://github.com/tianocore/edk2/pull/5372 Signed-off-by: yexiao <yexiao7@huawei.com> --- NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c | 44 +++++++++++++----------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c index e9c45072..db9e02a1 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c @@ -10,6 +10,16 @@ #include "Dhcp6Impl.h" +// +// Verifies the packet cursor is within the packet +// otherwise it is invalid +// +#define IS_INVALID_PACKET_CURSOR(PacketCursor, Packet) \ + (((*PacketCursor) < (Packet)->Dhcp6.Option) || \ + ((*PacketCursor) >= (Packet)->Dhcp6.Option + ((Packet)->Size - sizeof(EFI_DHCP6_HEADER))) \ + ) \ + + /** Generate client Duid in the format of Duid-llt. @@ -638,9 +648,7 @@ Dhcp6AppendOption ( // // Verify the PacketCursor is within the packet // - if ( (*PacketCursor < Packet->Dhcp6.Option) - || (*PacketCursor >= Packet->Dhcp6.Option + (Packet->Size - sizeof (EFI_DHCP6_HEADER)))) - { + if (IS_INVALID_PACKET_CURSOR (PacketCursor, Packet)) { return EFI_INVALID_PARAMETER; } @@ -657,15 +665,6 @@ Dhcp6AppendOption ( return EFI_BUFFER_TOO_SMALL; } - // - // Verify the PacketCursor is within the packet - // - if ( (*PacketCursor < Packet->Dhcp6.Option) - || (*PacketCursor >= Packet->Dhcp6.Option + (Packet->Size - sizeof (EFI_DHCP6_HEADER)))) - { - return EFI_INVALID_PARAMETER; - } - WriteUnaligned16 ((UINT16 *)*PacketCursor, OptType); *PacketCursor += DHCP6_SIZE_OF_OPT_CODE; WriteUnaligned16 ((UINT16 *)*PacketCursor, OptLen); @@ -744,9 +743,7 @@ Dhcp6AppendIaAddrOption ( // // Verify the PacketCursor is within the packet // - if ( (*PacketCursor < Packet->Dhcp6.Option) - || (*PacketCursor >= Packet->Dhcp6.Option + (Packet->Size - sizeof (EFI_DHCP6_HEADER)))) - { + if (IS_INVALID_PACKET_CURSOR (PacketCursor, Packet)) { return EFI_INVALID_PARAMETER; } @@ -877,9 +874,7 @@ Dhcp6AppendIaOption ( // // Verify the PacketCursor is within the packet // - if ( (*PacketCursor < Packet->Dhcp6.Option) - || (*PacketCursor >= Packet->Dhcp6.Option + (Packet->Size - sizeof (EFI_DHCP6_HEADER)))) - { + if (IS_INVALID_PACKET_CURSOR (PacketCursor, Packet)) { return EFI_INVALID_PARAMETER; } @@ -941,14 +936,14 @@ Dhcp6AppendIaOption ( } // - // Fill the value of Ia option length + // Update the packet length // - *Len = HTONS ((UINT16)(*PacketCursor - (UINT8 *)Len - 2)); + Packet->Length += BytesNeeded; // - // Update the packet length + // Fill the value of Ia option length // - Packet->Length += BytesNeeded; + *Len = HTONS ((UINT16)(*PacketCursor - (UINT8 *)Len - 2)); return EFI_SUCCESS; } @@ -957,6 +952,7 @@ Dhcp6AppendIaOption ( Append the appointed Elapsed time option to Buf, and move Buf to the end. @param[in, out] Packet A pointer to the packet, on success Packet->Length + will be updated. @param[in, out] PacketCursor The pointer in the packet, on success PacketCursor will be moved to the end of the option. @param[in] Instance The pointer to the Dhcp6 instance. @@ -1012,9 +1008,7 @@ Dhcp6AppendETOption ( // // Verify the PacketCursor is within the packet // - if ( (*PacketCursor < Packet->Dhcp6.Option) - || (*PacketCursor >= Packet->Dhcp6.Option + (Packet->Size - sizeof (EFI_DHCP6_HEADER)))) - { + if (IS_INVALID_PACKET_CURSOR (PacketCursor, Packet)) { return EFI_INVALID_PARAMETER; } -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2