Wang Fan
2015-07-10 08:19:08 UTC
Revise some errors which may lead NULL pointer be dereferenced:
* DnsDhcp.c: Paralist may be used without any initialized
* DnsHeader and RcvString may be null but be dereferenced
* HttpDriver.c: revise an if judgment
* HttpImpl.c: add a judgment to avoid null dereferenced
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: fanwang2 <***@intel.com>
---
NetworkPkg/DnsDxe/DnsDhcp.c | 2 ++
NetworkPkg/DnsDxe/DnsImpl.c | 4 +++-
NetworkPkg/HttpDxe/HttpDriver.c | 2 +-
NetworkPkg/HttpDxe/HttpImpl.c | 4 ++++
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/NetworkPkg/DnsDxe/DnsDhcp.c b/NetworkPkg/DnsDxe/DnsDhcp.c
index 4607f7b..1cc337f 100644
--- a/NetworkPkg/DnsDxe/DnsDhcp.c
+++ b/NetworkPkg/DnsDxe/DnsDhcp.c
@@ -299,10 +299,12 @@ GetDns4ServerFromDhcp4 (
Ip4Config2 = NULL;
DataSize = 0;
Data = NULL;
InterfaceInfo = NULL;
+ ZeroMem ((UINT8 *) ParaList, sizeof (ParaList));
+
ZeroMem (&MnpConfigData, sizeof (EFI_MANAGED_NETWORK_CONFIG_DATA));
ZeroMem (&DnsServerInfor, sizeof (DNS4_SERVER_INFOR));
ZeroMem (&Token, sizeof (EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN));
diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c
index c227093..b196d18 100644
--- a/NetworkPkg/DnsDxe/DnsImpl.c
+++ b/NetworkPkg/DnsDxe/DnsImpl.c
@@ -1047,10 +1047,11 @@ IsValidDnsResponse (
if (Packet == NULL){
continue;
} else {
TxString = NetbufGetByte (Packet, 0, NULL);
+ ASSERT (TxString != NULL);
DnsHeader = (DNS_HEADER *) TxString;
QueryName = (CHAR8 *) (TxString + sizeof (*DnsHeader));
QuerySection = (DNS_QUERY_SECTION *) (QueryName + AsciiStrLen (QueryName) + 1);
DnsHeader->Identification = NTOHS (DnsHeader->Identification);
@@ -1424,11 +1425,12 @@ DnsOnPacketReceived (
}
ASSERT (Packet != NULL);
RcvString = NetbufGetByte (Packet, 0, NULL);
-
+ ASSERT (RcvString != NULL);
+
//
// Parse Dns Response
//
ParseDnsResponse (Instance, RcvString, &Completed);
diff --git a/NetworkPkg/HttpDxe/HttpDriver.c b/NetworkPkg/HttpDxe/HttpDriver.c
index b65607a..43f42e2 100644
--- a/NetworkPkg/HttpDxe/HttpDriver.c
+++ b/NetworkPkg/HttpDxe/HttpDriver.c
@@ -77,11 +77,11 @@ HttpCreateService (
VOID
HttpCleanService (
IN HTTP_SERVICE *HttpService
)
{
- if (HttpService != NULL) {
+ if (HttpService == NULL) {
return ;
}
if (HttpService->TcpChildHandle != NULL) {
gBS->CloseProtocol (
diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c
index 4bd4ac8..545fe42 100644
--- a/NetworkPkg/HttpDxe/HttpImpl.c
+++ b/NetworkPkg/HttpDxe/HttpImpl.c
@@ -764,10 +764,14 @@ HttpResponseWorker (
EFI_HTTP_TOKEN *Token;
NET_MAP_ITEM *Item;
HTTP_TOKEN_WRAP *ValueInItem;
UINTN HdrLen;
+ if (Wrap == NULL || Wrap->HttpInstance == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
HttpInstance = Wrap->HttpInstance;
Token = Wrap->HttpToken;
HttpMsg = Token->Message;
* DnsDhcp.c: Paralist may be used without any initialized
* DnsHeader and RcvString may be null but be dereferenced
* HttpDriver.c: revise an if judgment
* HttpImpl.c: add a judgment to avoid null dereferenced
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: fanwang2 <***@intel.com>
---
NetworkPkg/DnsDxe/DnsDhcp.c | 2 ++
NetworkPkg/DnsDxe/DnsImpl.c | 4 +++-
NetworkPkg/HttpDxe/HttpDriver.c | 2 +-
NetworkPkg/HttpDxe/HttpImpl.c | 4 ++++
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/NetworkPkg/DnsDxe/DnsDhcp.c b/NetworkPkg/DnsDxe/DnsDhcp.c
index 4607f7b..1cc337f 100644
--- a/NetworkPkg/DnsDxe/DnsDhcp.c
+++ b/NetworkPkg/DnsDxe/DnsDhcp.c
@@ -299,10 +299,12 @@ GetDns4ServerFromDhcp4 (
Ip4Config2 = NULL;
DataSize = 0;
Data = NULL;
InterfaceInfo = NULL;
+ ZeroMem ((UINT8 *) ParaList, sizeof (ParaList));
+
ZeroMem (&MnpConfigData, sizeof (EFI_MANAGED_NETWORK_CONFIG_DATA));
ZeroMem (&DnsServerInfor, sizeof (DNS4_SERVER_INFOR));
ZeroMem (&Token, sizeof (EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN));
diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c
index c227093..b196d18 100644
--- a/NetworkPkg/DnsDxe/DnsImpl.c
+++ b/NetworkPkg/DnsDxe/DnsImpl.c
@@ -1047,10 +1047,11 @@ IsValidDnsResponse (
if (Packet == NULL){
continue;
} else {
TxString = NetbufGetByte (Packet, 0, NULL);
+ ASSERT (TxString != NULL);
DnsHeader = (DNS_HEADER *) TxString;
QueryName = (CHAR8 *) (TxString + sizeof (*DnsHeader));
QuerySection = (DNS_QUERY_SECTION *) (QueryName + AsciiStrLen (QueryName) + 1);
DnsHeader->Identification = NTOHS (DnsHeader->Identification);
@@ -1424,11 +1425,12 @@ DnsOnPacketReceived (
}
ASSERT (Packet != NULL);
RcvString = NetbufGetByte (Packet, 0, NULL);
-
+ ASSERT (RcvString != NULL);
+
//
// Parse Dns Response
//
ParseDnsResponse (Instance, RcvString, &Completed);
diff --git a/NetworkPkg/HttpDxe/HttpDriver.c b/NetworkPkg/HttpDxe/HttpDriver.c
index b65607a..43f42e2 100644
--- a/NetworkPkg/HttpDxe/HttpDriver.c
+++ b/NetworkPkg/HttpDxe/HttpDriver.c
@@ -77,11 +77,11 @@ HttpCreateService (
VOID
HttpCleanService (
IN HTTP_SERVICE *HttpService
)
{
- if (HttpService != NULL) {
+ if (HttpService == NULL) {
return ;
}
if (HttpService->TcpChildHandle != NULL) {
gBS->CloseProtocol (
diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c
index 4bd4ac8..545fe42 100644
--- a/NetworkPkg/HttpDxe/HttpImpl.c
+++ b/NetworkPkg/HttpDxe/HttpImpl.c
@@ -764,10 +764,14 @@ HttpResponseWorker (
EFI_HTTP_TOKEN *Token;
NET_MAP_ITEM *Item;
HTTP_TOKEN_WRAP *ValueInItem;
UINTN HdrLen;
+ if (Wrap == NULL || Wrap->HttpInstance == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
HttpInstance = Wrap->HttpInstance;
Token = Wrap->HttpToken;
HttpMsg = Token->Message;
--
1.9.5.msysgit.1
1.9.5.msysgit.1