/*
- * Copyright (c) 2004-2008, 2016, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2008, 2016-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
Boolean ok;
CFStringRef path;
SCNetworkProtocolPrivateRef protocolPrivate = (SCNetworkProtocolPrivateRef)protocol;
+ SCNetworkServiceRef service;
SCNetworkServicePrivateRef servicePrivate;
if (!isA_SCNetworkProtocol(protocol)) {
return FALSE;
}
- servicePrivate = (SCNetworkServicePrivateRef)protocolPrivate->service;
+ service = protocolPrivate->service;
+ servicePrivate = (SCNetworkServicePrivateRef)service;
+ if (!__SCNetworkServiceExists(service)) {
+ SC_log(LOG_ERR, "SCNetworkProtocolSetConfiguration() w/removed service\n protocol = %@\n service = %@",
+ protocolPrivate->entityID,
+ servicePrivate);
+ _SC_crash_once("SCNetworkProtocolSetConfiguration() w/removed service", NULL, NULL);
+ _SCErrorSet(kSCStatusInvalidArgument);
+ return FALSE;
+ }
+
path = copyProtocolConfigurationPath(protocolPrivate);
ok = __setPrefsConfiguration(servicePrivate->prefs, path, config, TRUE);
CFRelease(path);
Boolean ok;
CFStringRef path;
SCNetworkProtocolPrivateRef protocolPrivate = (SCNetworkProtocolPrivateRef)protocol;
+ SCNetworkServiceRef service;
SCNetworkServicePrivateRef servicePrivate;
if (!isA_SCNetworkProtocol(protocol)) {
return FALSE;
}
- servicePrivate = (SCNetworkServicePrivateRef)protocolPrivate->service;
+ service = protocolPrivate->service;
+ servicePrivate = (SCNetworkServicePrivateRef)service;
+ if (!__SCNetworkServiceExists(service)) {
+ SC_log(LOG_ERR, "SCNetworkProtocolSetEnabled() w/removed service\n protocol = %@\n service = %@",
+ protocolPrivate->entityID,
+ servicePrivate);
+ _SC_crash_once("SCNetworkProtocolSetEnabled() w/removed service", NULL, NULL);
+ _SCErrorSet(kSCStatusInvalidArgument);
+ return FALSE;
+ }
+
path = copyProtocolConfigurationPath(protocolPrivate);
ok = __setPrefsEnabled(servicePrivate->prefs, path, enabled);
CFRelease(path);