From 38cff19781f81586926b02f0fd1cb36c040395e0 Mon Sep 17 00:00:00 2001
From: Nate Karstens <nate.karstens@garmin.com>
Date: Thu, 10 Aug 2017 08:21:53 -0500
Subject: [PATCH 09/11] Fix possible NULL dereference

Fixes a possible NULL dereference if memory for
the PosixNetworkInterface could not be allocated.
Other logic seems to prevent dereferencing this
variable if NULL, but this instance seems to have
been overlooked.

Upstream-Status: Submitted [dts@apple.com]

Signed-off-by: Nate Karstens <nate.karstens@garmin.com>
---
 mDNSPosix/mDNSPosix.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
index a8a57df..3243ed4 100644
--- a/mDNSPosix/mDNSPosix.c
+++ b/mDNSPosix/mDNSPosix.c
@@ -951,12 +951,15 @@ mDNSlocal int SetupOneInterface(mDNS *const m, struct ifi_info *const ifi)
 
     // If interface is a direct link, address record will be marked as kDNSRecordTypeKnownUnique
     // and skip the probe phase of the probe/announce packet sequence.
-    intf->coreIntf.DirectLink = mDNSfalse;
+    if (err == 0)
+    {
+        intf->coreIntf.DirectLink = mDNSfalse;
 #ifdef DIRECTLINK_INTERFACE_NAME
-    if (strcmp(intfName, STRINGIFY(DIRECTLINK_INTERFACE_NAME)) == 0)
-        intf->coreIntf.DirectLink = mDNStrue;
+        if (strcmp(intfName, STRINGIFY(DIRECTLINK_INTERFACE_NAME)) == 0)
+            intf->coreIntf.DirectLink = mDNStrue;
 #endif
-    intf->coreIntf.SupportsUnicastMDNSResponse = mDNStrue;
+        intf->coreIntf.SupportsUnicastMDNSResponse = mDNStrue;
+    }
 
     // The interface is all ready to go, let's register it with the mDNS core.
     if (err == 0)
-- 
2.17.1

