Handle case where no old DNS servers exist

This commit is contained in:
Robert.Schreib 2021-04-21 13:49:55 +02:00
parent 31ffe4403c
commit 4e8640b380
No known key found for this signature in database
GPG Key ID: C5D4FEC8240C0777

View File

@ -40,9 +40,13 @@ void MacDNSHelper::setDNS(uint64_t nwid, const char *domain, const std::vector<I
CFStringRef key = CFStringCreateWithCString(NULL, buf, kCFStringEncodingUTF8);
CFArrayRef list = SCDynamicStoreCopyKeyList(ds, key);
CFIndex i = 0, j = CFArrayGetCount(list);
CFPropertyListRef oldDNSServers = SCDynamicStoreCopyValue(ds, (CFStringRef)CFArrayGetValueAtIndex(list, i));
if (!CFEqual(oldDNSServers,dict)) {
bool dnsServersChanged = true;
CFPropertyListRef oldDNSServers = NULL;
if (j > 0) {
oldDNSServers = SCDynamicStoreCopyValue(ds, (CFStringRef)CFArrayGetValueAtIndex(list, i));
dnsServersChanged = !CFEqual(oldDNSServers,dict);
}
if (dnsServersChanged) {
bool ret = TRUE;
if (j <= 0) {
ret &= SCDynamicStoreAddValue(ds, key, dict);
@ -53,8 +57,9 @@ void MacDNSHelper::setDNS(uint64_t nwid, const char *domain, const std::vector<I
fprintf(stderr, "Error writing DNS configuration\n");
}
}
CFRelease(oldDNSServers);
if (oldDNSServers != NULL) {
CFRelease(oldDNSServers);
}
CFRelease(list);
CFRelease(key);
CFRelease(dict);
@ -67,8 +72,8 @@ void MacDNSHelper::setDNS(uint64_t nwid, const char *domain, const std::vector<I
delete[] s;
CFRelease(ds);
}
void MacDNSHelper::removeDNS(uint64_t nwid)
void MacDNSHelper::removeDNS(uint64_t nwid)
{
SCDynamicStoreRef ds = SCDynamicStoreCreate(NULL, CFSTR("zerotier"), NULL, NULL);