summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSPosix
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-19 08:53:26 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-20 11:23:32 +0200
commitf01edf10244ccd53e098abdc1773c1aa0e4c5f8d (patch)
tree958a1ee323520629c4f027de1d4c56715949aa5c /mDNSResponder/mDNSPosix
parentmDNSResponder: Update to v625.41.2 (diff)
downloadrtems-libbsd-f01edf10244ccd53e098abdc1773c1aa0e4c5f8d.tar.bz2
mDNSResponder: Update to v765.1.2
The sources can be obtained via: https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-765.1.2.tar.gz Move mDNS_StartResolveService() and mDNS_StopResolveService() to an RTEMS-specific file (rtemsbsd/mdns/mDNSResolveService.c) using the v576.30.4 implementation. Apple removed these functions without explanation. Update #3522.
Diffstat (limited to 'mDNSResponder/mDNSPosix')
-rwxr-xr-xmDNSResponder/mDNSPosix/._ReadMe.txtbin171 -> 0 bytes
-rwxr-xr-xmDNSResponder/mDNSPosix/Makefile11
-rwxr-xr-xmDNSResponder/mDNSPosix/ReadMe.txt14
-rwxr-xr-xmDNSResponder/mDNSPosix/mDNSPosix.c72
-rw-r--r--mDNSResponder/mDNSPosix/mdnsd.sh2
-rwxr-xr-xmDNSResponder/mDNSPosix/nss_mdns.c4
6 files changed, 54 insertions, 49 deletions
diff --git a/mDNSResponder/mDNSPosix/._ReadMe.txt b/mDNSResponder/mDNSPosix/._ReadMe.txt
deleted file mode 100755
index cd621b2a..00000000
--- a/mDNSResponder/mDNSPosix/._ReadMe.txt
+++ /dev/null
Binary files differ
diff --git a/mDNSResponder/mDNSPosix/Makefile b/mDNSResponder/mDNSPosix/Makefile
index de8bd00c..4f98e90f 100755
--- a/mDNSResponder/mDNSPosix/Makefile
+++ b/mDNSResponder/mDNSPosix/Makefile
@@ -146,6 +146,7 @@ ifeq ($(os),x)
# we get build failures: ‘daemon’ is deprecated (declared at /usr/include/stdlib.h:283)
CFLAGS_OS = -DHAVE_IPV6 -no-cpp-precomp -Werror -Wdeclaration-after-statement \
-D__MAC_OS_X_VERSION_MIN_REQUIRED=__MAC_OS_X_VERSION_10_4 \
+ -DHAVE_STRLCPY=1 \
-D__APPLE_USE_RFC_2292 #-Wunreachable-code
CC = gcc
LD = $(CC) -dynamiclib
@@ -218,7 +219,7 @@ CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_OS) $(CFLAGS_DEBUG)
all: setup Daemon libdns_sd Clients SAClient SAResponder SAProxyResponder Identify NetMonitor $(OPTIONALTARG)
-install: setup InstalledDaemon InstalledStartup InstalledLib InstalledManPages InstalledClients $(OPTINSTALL)
+install: setup InstalledStartup InstalledDaemon InstalledLib InstalledManPages InstalledClients $(OPTINSTALL)
# 'setup' sets up the build directory structure the way we want
setup:
@@ -297,9 +298,10 @@ InstalledNSS: $(NSSINSTPATH)/$(NSSLINKNAME) /etc/nss_mdns.conf $(MANPATH)/man5/n
@echo $+ " installed"
# Note: If daemon already installed, we make sure it's stopped before overwriting it
-$(INSTBASE)/sbin/mdnsd: $(BUILDDIR)/mdnsd
+$(INSTBASE)/sbin/mdnsd: $(BUILDDIR)/mdnsd $(STARTUPSCRIPTDIR)/$(STARTUPSCRIPTNAME)
@if test -x $@; then $(STARTUPSCRIPTDIR)/$(STARTUPSCRIPTNAME) stop; fi
$(CP) $< $@
+ @$(STARTUPSCRIPTDIR)/$(STARTUPSCRIPTNAME) start
$(INSTBASE)/lib/libdns_sd.$(LDSUFFIX).$(LIBVERS): $(BUILDDIR)/libdns_sd.$(LDSUFFIX)
$(CP) $< $@
@@ -312,12 +314,9 @@ endif
$(INSTBASE)/include/dns_sd.h: $(SHAREDDIR)/dns_sd.h
$(CP) $< $@
-# We make this target dependent on $(INSTBASE)/sbin/mdnsd because we need to ensure
-# that the daemon is installed *before* we try to execute the command to start it.
-$(STARTUPSCRIPTDIR)/$(STARTUPSCRIPTNAME): mdnsd.sh $(STARTUPSCRIPTDIR) $(INSTBASE)/sbin/mdnsd
+$(STARTUPSCRIPTDIR)/$(STARTUPSCRIPTNAME): mdnsd.sh $(STARTUPSCRIPTDIR)
$(CP) $< $@
chmod ugo+x $@
- $@ start
ifdef RUNLEVELSCRIPTSDIR
ifeq ($(wildcard $(RUNLEVELSCRIPTSDIR)/runlevels/default), $(RUNLEVELSCRIPTSDIR)/runlevels/default)
$(LN) $@ $(RUNLEVELSCRIPTSDIR)/runlevels/default/mdns
diff --git a/mDNSResponder/mDNSPosix/ReadMe.txt b/mDNSResponder/mDNSPosix/ReadMe.txt
index a374ddf0..c2f56412 100755
--- a/mDNSResponder/mDNSPosix/ReadMe.txt
+++ b/mDNSResponder/mDNSPosix/ReadMe.txt
@@ -308,20 +308,6 @@ CVE-ID
CVE-2011-0220 : JaeSeung Song of the Department of Computing at Imperial
College London
-Impact:  A local application may be able to cause a denial of service
-Description:  A denial of service issue was addressed through
-improved memory handling.
-CVE-ID
-CVE-2015-7988 : Alexandre Helie
-
-Impact:  A remote attacker may be able to cause unexpected
-application termination or arbitrary code execution
-Description:  Multiple memory corruption issues existed in DNS
-data parsing. These issues were addressed through improved bounds
-checking.
-CVE-ID
-CVE-2015-7987 : Alexandre Helie
-
To Do List
----------
• port to a System V that's not Solaris
diff --git a/mDNSResponder/mDNSPosix/mDNSPosix.c b/mDNSResponder/mDNSPosix/mDNSPosix.c
index 77b57149..07633703 100755
--- a/mDNSResponder/mDNSPosix/mDNSPosix.c
+++ b/mDNSResponder/mDNSPosix/mDNSPosix.c
@@ -147,7 +147,7 @@ mDNSlocal void SockAddrTomDNSAddr(const struct sockaddr *const sa, mDNSAddr *ipA
// mDNS core calls this routine when it needs to send a packet.
mDNSexport mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const msg, const mDNSu8 *const end,
- mDNSInterfaceID InterfaceID, UDPSocket *src, const mDNSAddr *dst,
+ mDNSInterfaceID InterfaceID, UDPSocket *src, const mDNSAddr *dst,
mDNSIPPort dstPort, mDNSBool useBackgroundTrafficClass)
{
int err = 0;
@@ -320,13 +320,6 @@ mDNSlocal void SocketDataReady(mDNS *const m, PosixNetworkInterface *intf, int s
&senderAddr, senderPort, &destAddr, MulticastDNSPort, InterfaceID);
}
-mDNSexport mDNSBool mDNSPlatformPeekUDP(mDNS *const m, UDPSocket *src)
-{
- (void)m; // unused
- (void)src; // unused
- return mDNSfalse;
-}
-
mDNSexport TCPSocket *mDNSPlatformTCPSocket(mDNS * const m, TCPSocketFlags flags, mDNSIPPort * port, mDNSBool useBackgroundTrafficClass)
{
(void)m; // Unused
@@ -929,8 +922,8 @@ mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct
// and skip the probe phase of the probe/announce packet sequence.
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;
@@ -1419,14 +1412,36 @@ mDNSexport void mDNSPlatformUnlock (const mDNS *const m)
// On the Posix platform this maps directly to the ANSI C strcpy.
mDNSexport void mDNSPlatformStrCopy(void *dst, const void *src)
{
- strcpy((char *)dst, (char *)src);
+ strcpy((char *)dst, (const char *)src);
+}
+
+mDNSexport mDNSu32 mDNSPlatformStrLCopy(void *dst, const void *src, mDNSu32 len)
+{
+#if HAVE_STRLCPY
+ return ((mDNSu32)strlcpy((char *)dst, (const char *)src, len));
+#else
+ size_t srcLen;
+
+ srcLen = strlen((const char *)src);
+ if (srcLen < len)
+ {
+ memcpy(dst, src, srcLen + 1);
+ }
+ else if (len > 0)
+ {
+ memcpy(dst, src, len - 1);
+ ((char *)dst)[len - 1] = '\0';
+ }
+
+ return ((mDNSu32)srcLen);
+#endif
}
// mDNS core calls this routine to get the length of a C string.
// On the Posix platform this maps directly to the ANSI C strlen.
mDNSexport mDNSu32 mDNSPlatformStrLen (const void *src)
{
- return strlen((char*)src);
+ return strlen((const char*)src);
}
// mDNS core calls this routine to copy memory.
@@ -1558,10 +1573,10 @@ mDNSexport void mDNSPlatformSendWakeupPacket(mDNS *const m, mDNSInterfaceID Inte
(void) iteration;
}
-mDNSexport mDNSBool mDNSPlatformValidRecordForInterface(AuthRecord *rr, const NetworkInterfaceInfo *intf)
+mDNSexport mDNSBool mDNSPlatformValidRecordForInterface(const AuthRecord *rr, mDNSInterfaceID InterfaceID)
{
(void) rr;
- (void) intf;
+ (void) InterfaceID;
return 1;
}
@@ -1620,37 +1635,38 @@ mDNSexport mStatus mDNSPlatformStoreSPSMACAddr(mDNSAddr *spsaddr, char *ifnam
return mStatus_NoError;
}
-mDNSexport mStatus mDNSPlatformClearSPSMACAddr(void)
+mDNSexport mStatus mDNSPlatformClearSPSData(void)
{
return mStatus_NoError;
}
+mDNSexport mStatus mDNSPlatformStoreOwnerOptRecord(char *ifname, DNSMessage *msg, int length)
+{
+ (void) ifname; // Unused
+ (void) msg; // Unused
+ (void) length; // Unused
+ return mStatus_UnsupportedErr;
+}
+
mDNSexport mDNSu16 mDNSPlatformGetUDPPort(UDPSocket *sock)
{
(void) sock; // unused
-
+
return (mDNSu16)-1;
}
mDNSexport mDNSBool mDNSPlatformInterfaceIsD2D(mDNSInterfaceID InterfaceID)
{
(void) InterfaceID; // unused
-
- return mDNSfalse;
-}
-
-mDNSexport void mDNSPlatformGetDNSRoutePolicy(mDNS *const m, DNSQuestion *q, mDNSBool *isCellBlocked)
-{
- (void) m;
- q->ServiceID = -1;
- *isCellBlocked = mDNSfalse;
+ return mDNSfalse;
}
-mDNSexport void mDNSPlatformSetuDNSSocktOpt(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)
+mDNSexport void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, DNSQuestion *q)
{
- (void) src;
- (void) dst;
+ (void) sock;
+ (void) transType;
+ (void) addrType;
(void) q;
}
diff --git a/mDNSResponder/mDNSPosix/mdnsd.sh b/mDNSResponder/mDNSPosix/mdnsd.sh
index c43d9fcb..6e65612b 100644
--- a/mDNSResponder/mDNSPosix/mdnsd.sh
+++ b/mDNSResponder/mDNSPosix/mdnsd.sh
@@ -40,6 +40,7 @@ if [ -r /sbin/start-stop-daemon ]; then
else
killmdnsd() {
kill -TERM `cat /var/run/mdnsd.pid`
+ sleep 1
}
START=
STOP=killmdnsd
@@ -60,7 +61,6 @@ case "$1" in
reload|restart|force-reload)
echo -n "Restarting Apple Darwin Multicast DNS / DNS Service Discovery daemon:"
$STOP $DAEMON
- sleep 1
$START $DAEMON
echo -n " mdnsd"
;;
diff --git a/mDNSResponder/mDNSPosix/nss_mdns.c b/mDNSResponder/mDNSPosix/nss_mdns.c
index ade4d4d2..afadb3c6 100755
--- a/mDNSResponder/mDNSPosix/nss_mdns.c
+++ b/mDNSResponder/mDNSPosix/nss_mdns.c
@@ -1088,6 +1088,7 @@ mdns_lookup_callback
ns_type_t expected_rr_type =
af_to_rr (result->hostent->h_addrtype);
+ // Idiot check class
if (rrclass != C_IN)
{
syslog (LOG_WARNING,
@@ -1269,6 +1270,7 @@ add_address_to_buffer (result_map_t * result, const void * data, int len)
return NULL;
}
+ // Idiot check
if (len != result->hostent->h_length)
{
syslog (LOG_WARNING,
@@ -1309,6 +1311,7 @@ contains_address (result_map_t * result, const void * data, int len)
{
int i;
+ // Idiot check
if (len != result->hostent->h_length)
{
syslog (LOG_WARNING,
@@ -2470,6 +2473,7 @@ cmp_dns_suffix (const char * name, const char * domain)
const char * nametail;
const char * domaintail;
+ // Idiot checks
if (*name == 0 || *name == k_dns_separator)
{
// Name can't be empty or start with separator