meta-openembedded/meta-networking/recipes-protocols/mdns/files/0011-Change-a-dynamic-allocation-to-file-scope-variable.patch
Matt Hoosier a44430fe91 mdns: improve numerous aspects of Posix backend
Apple's default implementation of the Posix backend for mDNSResponder
has a number of weaknesses. Address several of them, most notably:

* Improve interface tracking, preventing confusion to mdns's state
  machine. Prevents spurious removal/republication cycles whenever
  network interfaces are added or removed.

* Support network interfaces whose indeces are great than 31. Indices
  grow past that range surprisingly quickly, especially with multi-
  homed, mobile, wifi, Bluetooth, VPN, VLANs, or other interfaces
  present.

* Correctly handle edge cases during removal of a network interface.

The fixes are kept as a patch series for clarity.

Signed-off-by: Matt Hoosier <matt.hoosier@garmin.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-02-06 07:20:03 -08:00

52 lines
1.8 KiB
Diff

From 19de26db69408f02241e232b39224589a0f630df Mon Sep 17 00:00:00 2001
From: Nate Karstens <nate.karstens@garmin.com>
Date: Thu, 10 Aug 2017 08:46:03 -0500
Subject: [PATCH 11/11] Change a dynamic allocation to file-scope variable
Changes a variable from being dynamically-allocated to being
statically-allocated at the file scope. Addresses a Coverity
issue where it appeared that the memory was being leaked.
Upstream-Status: Submitted [dts@apple.com]
Signed-off-by: Nate Karstens <nate.karstens@garmin.com>
---
mDNSPosix/mDNSPosix.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
index 84af26b..b7795ed 100644
--- a/mDNSPosix/mDNSPosix.c
+++ b/mDNSPosix/mDNSPosix.c
@@ -91,6 +91,7 @@ static sigset_t gEventSignalSet; // Signals which event loop list
static sigset_t gEventSignals; // Signals which were received while inside loop
static PosixNetworkInterface *gRecentInterfaces;
+static IfChangeRec gChgRec;
// ***************************************************************************
// Globals (for debugging)
@@ -1412,16 +1413,11 @@ cleanup:
mDNSlocal mStatus WatchForInterfaceChange(mDNS *const m)
{
mStatus err;
- IfChangeRec *pChgRec;
- pChgRec = (IfChangeRec*) mDNSPlatformMemAllocate(sizeof *pChgRec);
- if (pChgRec == NULL)
- return mStatus_NoMemoryErr;
-
- pChgRec->mDNS = m;
- err = OpenIfNotifySocket(&pChgRec->NotifySD);
+ gChgRec.mDNS = m;
+ err = OpenIfNotifySocket(&gChgRec.NotifySD);
if (err == 0)
- err = mDNSPosixAddFDToEventLoop(pChgRec->NotifySD, InterfaceChangeCallback, pChgRec);
+ err = mDNSPosixAddFDToEventLoop(gChgRec.NotifySD, InterfaceChangeCallback, &gChgRec);
return err;
}
--
2.17.1