diff options
Diffstat (limited to 'NetworkPkg/DnsDxe/DnsImpl.c')
-rw-r--r-- | NetworkPkg/DnsDxe/DnsImpl.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c index 19184415e5..4f10e17cf3 100644 --- a/NetworkPkg/DnsDxe/DnsImpl.c +++ b/NetworkPkg/DnsDxe/DnsImpl.c @@ -1615,6 +1615,10 @@ DnsOnPacketReceived ( }
ASSERT (Packet != NULL);
+
+ if (Packet->TotalSize <= sizeof (DNS_HEADER)) {
+ goto ON_EXIT;
+ }
RcvString = NetbufGetByte (Packet, 0, NULL);
ASSERT (RcvString != NULL);
@@ -1624,15 +1628,15 @@ DnsOnPacketReceived ( //
ParseDnsResponse (Instance, RcvString, &Completed);
- ON_EXIT:
+ON_EXIT:
- if (Packet != NULL) {
- NetbufFree (Packet);
- }
+ if (Packet != NULL) {
+ NetbufFree (Packet);
+ }
- if (!Completed) {
- UdpIoRecvDatagram (Instance->UdpIo, DnsOnPacketReceived, Instance, 0);
- }
+ if (!Completed) {
+ UdpIoRecvDatagram (Instance->UdpIo, DnsOnPacketReceived, Instance, 0);
+ }
}
/**
|