Error checking for invalid input parameters was too
hard. Replace ASSERT with returning error value.
Moreover set EtherType only when we are sure it
won't be dereferencing NULL pointer.
Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c b/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c
index 8a4c4545c8..deb3f34625 100644
--- a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c
+++ b/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c
@@ -1074,9 +1074,15 @@ Pp2SnpTransmit (
}
if (HeaderSize != 0) {
- ASSERT (HeaderSize == This->Mode->MediaHeaderSize);
- ASSERT (EtherTypePtr != NULL);
- ASSERT (DestAddr != NULL);
+ if (HeaderSize != This->Mode->MediaHeaderSize ||
+ EtherTypePtr == NULL ||
+ DestAddr == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+ }
+
+ if (BufferSize < This->Mode->MediaHeaderSize) {
+ return EFI_BUFFER_TOO_SMALL;
}
SavedTpl = gBS->RaiseTPL (TPL_CALLBACK);
@@ -1100,8 +1106,6 @@ Pp2SnpTransmit (
ReturnUnlock(SavedTpl, EFI_NOT_READY);
}
- EtherType = HTONS (*EtherTypePtr);
-
/* Fetch next descriptor */
TxDesc = Mvpp2TxqNextDescGet(AggrTxq);
@@ -1118,6 +1122,8 @@ Pp2SnpTransmit (
else
CopyMem(DataPtr + NET_ETHER_ADDR_LEN, &This->Mode->CurrentAddress, NET_ETHER_ADDR_LEN);
+ EtherType = HTONS (*EtherTypePtr);
+
CopyMem(DataPtr + NET_ETHER_ADDR_LEN * 2, &EtherType, 2);
}
--
2.29.0
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#87545): https://edk2.groups.io/g/devel/message/87545
Mute This Topic: https://groups.io/mt/89776256/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-