summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Library
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2010-01-08 02:35:56 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2010-01-08 02:35:56 +0000
commite285199897e538523f762cb5b3900e81f872035a (patch)
treeaad7875d4dfb9f1705796b9c405c4f5549df18e1 /MdeModulePkg/Library
parent33338afebd3004e24d642e6dd7d053cda83990f1 (diff)
downloadedk2-platforms-e285199897e538523f762cb5b3900e81f872035a.tar.xz
refine the code and add more security check.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9691 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Library')
-rw-r--r--MdeModulePkg/Library/DxeNetLib/DxeNetLib.c10
-rw-r--r--MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c127
2 files changed, 68 insertions, 69 deletions
diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
index f58783cdfd..e18f4ab474 100644
--- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
+++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
@@ -1,7 +1,7 @@
/** @file
Network library.
-Copyright (c) 2005 - 2009, Intel Corporation.<BR>
+Copyright (c) 2005 - 2010, Intel Corporation.<BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -1530,7 +1530,7 @@ EFIAPI
NetMapIterate (
IN NET_MAP *Map,
IN NET_MAP_CALLBACK CallBack,
- IN VOID *Arg
+ IN VOID *Arg OPTIONAL
)
{
@@ -1900,9 +1900,9 @@ NetLibGetVlanId (
This function will append VLAN device path node to the parent device path,
and then use LocateDevicePath() to find the correct VLAN device handle.
- @param[in] ServiceHandle The handle where network service binding protocols are
+ @param[in] ControllerHandle The handle where network service binding protocols are
installed on.
- @param[in] VLanId The configured VLAN ID for the VLAN device.
+ @param[in] VlanId The configured VLAN ID for the VLAN device.
@return The VLAN device handle, or NULL if not found.
@@ -2399,7 +2399,7 @@ NetLibGetNicHandle (
Handle = NULL;
for (Index = 0; Index < OpenCount; Index++) {
- if (OpenBuffer[Index].Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) {
+ if ((OpenBuffer[Index].Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {
Handle = OpenBuffer[Index].ControllerHandle;
break;
}
diff --git a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
index bb85aebc28..afcde8199a 100644
--- a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
+++ b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
@@ -1,6 +1,6 @@
/** @file
Help functions to access UDP service, it is used by both the DHCP and MTFTP.
-
+
Copyright (c) 2005 - 2009, Intel Corporation.<BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -44,7 +44,7 @@ UdpIoFreeTxToken (
} else {
ASSERT (FALSE);
}
-
+
FreePool (TxToken);
}
@@ -65,14 +65,14 @@ UdpIoFreeRxToken (
gBS->CloseEvent (RxToken->Token.Udp6.Event);
} else {
ASSERT (FALSE);
- }
+ }
FreePool (RxToken);
}
/**
The callback function when the packet is sent by UDP.
-
+
It will remove the packet from the local list then call
the packet owner's callback function set by UdpIoSendDatagram.
@@ -91,7 +91,7 @@ UdpIoOnDgramSentDpc (
ASSERT (TxToken->Signature == UDP_IO_TX_SIGNATURE);
ASSERT ((TxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) ||
(TxToken->UdpIo->UdpVersion == UDP_IO_UDP6_VERSION));
-
+
RemoveEntryList (&TxToken->Link);
if (TxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) {
@@ -105,7 +105,7 @@ UdpIoOnDgramSentDpc (
/**
Request UdpIoOnDgramSentDpc as a DPC at TPL_CALLBACK.
-
+
@param[in] Event The event signaled.
@param[in] Context The UDP TX Token.
@@ -133,7 +133,7 @@ VOID
UdpIoRecycleDgram (
IN VOID *Context
)
-{
+{
UDP_RX_TOKEN *RxToken;
RxToken = (UDP_RX_TOKEN *) Context;
@@ -151,7 +151,7 @@ UdpIoRecycleDgram (
/**
The event handle for UDP receive request.
-
+
It will build a NET_BUF from the recieved UDP data, then deliver it
to the receiver.
@@ -176,7 +176,7 @@ UdpIoOnDgramRcvdDpc (
ZeroMem (&EndPoint, sizeof(UDP_END_POINT));
- ASSERT ((RxToken->Signature == UDP_IO_RX_SIGNATURE) &&
+ ASSERT ((RxToken->Signature == UDP_IO_RX_SIGNATURE) &&
(RxToken == RxToken->UdpIo->RecvRequest));
ASSERT ((RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) ||
@@ -214,7 +214,7 @@ UdpIoOnDgramRcvdDpc (
// Build a NET_BUF from the UDP receive data, then deliver it up.
//
if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) {
-
+
Netbuf = NetbufFromExt (
(NET_FRAGMENT *)((EFI_UDP4_RECEIVE_DATA *) RxData)->FragmentTable,
((EFI_UDP4_RECEIVE_DATA *) RxData)->FragmentCount,
@@ -251,7 +251,7 @@ UdpIoOnDgramRcvdDpc (
EndPoint.LocalAddr.Addr[0] = NTOHL (EndPoint.LocalAddr.Addr[0]);
EndPoint.RemoteAddr.Addr[0] = NTOHL (EndPoint.RemoteAddr.Addr[0]);
} else {
-
+
Netbuf = NetbufFromExt (
(NET_FRAGMENT *)((EFI_UDP6_RECEIVE_DATA *) RxData)->FragmentTable,
((EFI_UDP6_RECEIVE_DATA *) RxData)->FragmentCount,
@@ -260,19 +260,19 @@ UdpIoOnDgramRcvdDpc (
UdpIoRecycleDgram,
RxToken
);
-
+
if (Netbuf == NULL) {
gBS->SignalEvent (((EFI_UDP6_RECEIVE_DATA *) RxData)->RecycleSignal);
RxToken->CallBack (NULL, NULL, EFI_OUT_OF_RESOURCES, RxToken->Context);
-
+
UdpIoFreeRxToken (RxToken);
return;
}
-
+
Session = &((EFI_UDP6_RECEIVE_DATA *) RxData)->UdpSession;
EndPoint.LocalPort = ((EFI_UDP6_SESSION_DATA *) Session)->DestinationPort;
EndPoint.RemotePort = ((EFI_UDP6_SESSION_DATA *) Session)->SourcePort;
-
+
CopyMem (
&EndPoint.LocalAddr,
&((EFI_UDP6_SESSION_DATA *) Session)->DestinationAddress,
@@ -362,7 +362,7 @@ UdpIoCreateRxToken (
&Token->Token.Udp4.Event
);
} else {
-
+
Token->Token.Udp6.Status = EFI_NOT_READY;
Token->Token.Udp6.Packet.RxData = NULL;
@@ -373,7 +373,7 @@ UdpIoCreateRxToken (
Token,
&Token->Token.Udp6.Event
);
- }
+ }
if (EFI_ERROR (Status)) {
@@ -394,7 +394,7 @@ UdpIoCreateRxToken (
@param[in] CallBack The function to call when transmission completed.
@param[in] Context The opaque parameter to the call back.
- @return The wrapped transmission request or NULL if failed to allocate resources
+ @return The wrapped transmission request or NULL if failed to allocate resources
or for some errors.
**/
@@ -414,7 +414,7 @@ UdpIoCreateTxToken (
EFI_STATUS Status;
UINT32 Count;
UINTN Size;
- IP4_ADDR Ip;
+ IP4_ADDR Ip;
ASSERT (Packet != NULL);
ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) ||
@@ -478,15 +478,15 @@ UdpIoCreateTxToken (
if (EndPoint != NULL) {
Ip = HTONL (EndPoint->LocalAddr.Addr[0]);
CopyMem (
- &TxToken->Session.Udp4.SourceAddress,
- &Ip,
+ &TxToken->Session.Udp4.SourceAddress,
+ &Ip,
sizeof (EFI_IPv4_ADDRESS)
);
Ip = HTONL (EndPoint->RemoteAddr.Addr[0]);
CopyMem (
- &TxToken->Session.Udp4.DestinationAddress,
- &Ip,
+ &TxToken->Session.Udp4.DestinationAddress,
+ &Ip,
sizeof (EFI_IPv4_ADDRESS)
);
@@ -498,13 +498,13 @@ UdpIoCreateTxToken (
if (Gateway != NULL && (Gateway->Addr[0] != 0)) {
Ip = HTONL (Gateway->Addr[0]);
CopyMem (&TxToken->Gateway, &Ip, sizeof (EFI_IPv4_ADDRESS));
- ((EFI_UDP4_TRANSMIT_DATA *) Data)->GatewayAddress = &TxToken->Gateway;
+ ((EFI_UDP4_TRANSMIT_DATA *) Data)->GatewayAddress = &TxToken->Gateway;
}
} else {
-
+
((EFI_UDP6_COMPLETION_TOKEN *) Token)->Status = EFI_NOT_READY;
-
+
Status = gBS->CreateEvent (
EVT_NOTIFY_SIGNAL,
TPL_NOTIFY,
@@ -517,7 +517,7 @@ UdpIoCreateTxToken (
FreePool (TxToken);
return NULL;
}
-
+
Data = &(TxToken->Data.Udp6);
((EFI_UDP6_COMPLETION_TOKEN *) Token)->Packet.TxData = Data;
((EFI_UDP6_TRANSMIT_DATA *) Data)->UdpSessionData = NULL;
@@ -533,21 +533,21 @@ UdpIoCreateTxToken (
if (EndPoint != NULL) {
CopyMem (
- &TxToken->Session.Udp6.SourceAddress,
- &EndPoint->LocalAddr.v6,
+ &TxToken->Session.Udp6.SourceAddress,
+ &EndPoint->LocalAddr.v6,
sizeof(EFI_IPv6_ADDRESS)
);
CopyMem (
- &TxToken->Session.Udp6.DestinationAddress,
- &EndPoint->RemoteAddr.v6,
+ &TxToken->Session.Udp6.DestinationAddress,
+ &EndPoint->RemoteAddr.v6,
sizeof(EFI_IPv6_ADDRESS)
);
TxToken->Session.Udp6.SourcePort = EndPoint->LocalPort;
TxToken->Session.Udp6.DestinationPort = EndPoint->RemotePort;
((EFI_UDP6_TRANSMIT_DATA *) Data)->UdpSessionData = &(TxToken->Session.Udp6);
- }
+ }
}
return TxToken;
@@ -556,12 +556,11 @@ UdpIoCreateTxToken (
/**
Creates a UDP_IO to access the UDP service. It creates and configures
a UDP child.
-
- This function:
- # locates the UDP service binding prototype on the Controller parameter
- # uses the UDP service binding prototype to create a UDP child (also known as a UDP instance)
- # configures the UDP child by calling Configure function prototype.
- Any failures in creating or configuring the UDP child return NULL for failure.
+
+ It locates the UDP service binding prototype on the Controller parameter
+ uses the UDP service binding prototype to create a UDP child (also known as
+ a UDP instance) configures the UDP child by calling Configure function prototype.
+ Any failures in creating or configuring the UDP child return NULL for failure.
@param[in] Controller The controller that has the UDP service binding.
protocol installed.
@@ -617,7 +616,7 @@ UdpIoCreateIo (
&gEfiUdp4ServiceBindingProtocolGuid,
&UdpIo->UdpHandle
);
-
+
if (EFI_ERROR (Status)) {
goto FREE_MEM;
}
@@ -638,32 +637,32 @@ UdpIoCreateIo (
if (EFI_ERROR (Configure (UdpIo, Context))) {
goto CLOSE_PROTOCOL;
}
-
+
Status = UdpIo->Protocol.Udp4->GetModeData (
- UdpIo->Protocol.Udp4,
- NULL,
- NULL,
- NULL,
+ UdpIo->Protocol.Udp4,
+ NULL,
+ NULL,
+ NULL,
&UdpIo->SnpMode
);
-
+
if (EFI_ERROR (Status)) {
goto CLOSE_PROTOCOL;
}
} else {
-
+
Status = NetLibCreateServiceChild (
Controller,
ImageHandle,
&gEfiUdp6ServiceBindingProtocolGuid,
&UdpIo->UdpHandle
);
-
+
if (EFI_ERROR (Status)) {
goto FREE_MEM;
}
-
+
Status = gBS->OpenProtocol (
UdpIo->UdpHandle,
&gEfiUdp6ProtocolGuid,
@@ -672,23 +671,23 @@ UdpIoCreateIo (
Controller,
EFI_OPEN_PROTOCOL_BY_DRIVER
);
-
+
if (EFI_ERROR (Status)) {
goto FREE_CHILD;
}
-
+
if (EFI_ERROR (Configure (UdpIo, Context))) {
goto CLOSE_PROTOCOL;
}
-
+
Status = UdpIo->Protocol.Udp6->GetModeData (
- UdpIo->Protocol.Udp6,
- NULL,
- NULL,
- NULL,
+ UdpIo->Protocol.Udp6,
+ NULL,
+ NULL,
+ NULL,
&UdpIo->SnpMode
);
-
+
if (EFI_ERROR (Status)) {
goto CLOSE_PROTOCOL;
}
@@ -763,12 +762,12 @@ UdpIoCancelDgrams (
UdpIo->Protocol.Udp6->Cancel (UdpIo->Protocol.Udp6, &TxToken->Token.Udp6);
}
}
- }
+ }
}
/**
Free the UDP_IO and all its related resources.
-
+
The function will cancel all sent datagram and receive request.
@param[in] UdpIo The UDP_IO to free.
@@ -825,7 +824,7 @@ UdpIoFreeIo (
if ((RxToken = UdpIo->RecvRequest) != NULL) {
UdpIo->Protocol.Udp6->Cancel (UdpIo->Protocol.Udp6, &RxToken->Token.Udp6);
}
-
+
//
// Close then destory the Udp6 child
//
@@ -835,7 +834,7 @@ UdpIoFreeIo (
UdpIo->Image,
UdpIo->Controller
);
-
+
NetLibDestroyServiceChild (
UdpIo->Controller,
UdpIo->Image,
@@ -856,7 +855,7 @@ UdpIoFreeIo (
/**
Clean up the UDP_IO without freeing it. The function is called when
user wants to re-use the UDP_IO later.
-
+
It will release all the transmitted datagrams and receive request. It will
also configure NULL for the UDP instance.
@@ -897,7 +896,7 @@ UdpIoCleanIo (
/**
Send a packet through the UDP_IO.
-
+
The packet will be wrapped in UDP_TX_TOKEN. Function Callback will be called
when the packet is sent. The optional parameter EndPoint overrides the default
address pair if specified.
@@ -906,7 +905,7 @@ UdpIoCleanIo (
@param[in] Packet The packet to send.
@param[in] EndPoint The local and remote access point. Override the
default address pair set during configuration.
- @param[in] Gateway The gateway to use.
+ @param[in] Gateway The gateway to use.
@param[in] CallBack The function being called when packet is
transmitted or failed.
@param[in] Context The opaque parameter passed to CallBack.
@@ -1006,7 +1005,7 @@ UdpIoCancelSentDatagram (
/**
Issue a receive request to the UDP_IO.
-
+
This function is called when upper-layer needs packet from UDP for processing.
Only one receive request is acceptable at a time so a common usage model is
to invoke this function inside its Callback function when the former packet