diff options
Diffstat (limited to 'MdeModulePkg/Core')
-rw-r--r-- | MdeModulePkg/Core/Dxe/Hand/Handle.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c index 51e5b5d3b3..24e4fbf5f3 100644 --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c @@ -918,28 +918,25 @@ CoreUninstallMultipleProtocolInterfaces ( Locate a certain GUID protocol interface in a Handle's protocols.
@param UserHandle The handle to obtain the protocol interface on
+ The caller must pass in a valid UserHandle that
+ is checked with CoreValidateHandle().
@param Protocol The GUID of the protocol
@return The requested protocol interface for the handle
**/
+STATIC
PROTOCOL_INTERFACE *
CoreGetProtocolInterface (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol
)
{
- EFI_STATUS Status;
PROTOCOL_ENTRY *ProtEntry;
PROTOCOL_INTERFACE *Prot;
IHANDLE *Handle;
LIST_ENTRY *Link;
- Status = CoreValidateHandle (UserHandle);
- if (EFI_ERROR (Status)) {
- return NULL;
- }
-
Handle = (IHANDLE *)UserHandle;
//
@@ -1393,6 +1390,15 @@ CoreOpenProtocolInformation ( CoreAcquireProtocolLock ();
//
+ // Check for invalid UserHandle
+ //
+ Status = CoreValidateHandle (UserHandle);
+ if (EFI_ERROR (Status)) {
+ Status = EFI_NOT_FOUND;
+ goto Done;
+ }
+
+ //
// Look at each protocol interface for a match
//
Status = EFI_NOT_FOUND;
|