]> git.saurik.com Git - apple/configd.git/blobdiff - configd.tproj/_notifyremove.c
configd-53.1.tar.gz
[apple/configd.git] / configd.tproj / _notifyremove.c
index fb746074df8928d5af3f5993850cd91f5a281707..5461ed9f66afdd5526928e9b6c21f1636573d8db 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  *
@@ -160,37 +160,20 @@ _notifyremove(mach_port_t         server,
              int                       *sc_status
 )
 {
-       kern_return_t           status;
        serverSessionRef        mySession = getSession(server);
-       CFDataRef               xmlKey;         /* key  (XML serialized) */
        CFStringRef             key;            /* key  (un-serialized) */
-       CFStringRef             xmlError;
 
        SCLog(_configd_verbose, LOG_DEBUG, CFSTR("Remove notification key for this session."));
        SCLog(_configd_verbose, LOG_DEBUG, CFSTR("  server = %d"), server);
 
        /* un-serialize the key */
-       xmlKey = CFDataCreate(NULL, keyRef, keyLen);
-       status = vm_deallocate(mach_task_self(), (vm_address_t)keyRef, keyLen);
-       if (status != KERN_SUCCESS) {
-               SCLog(_configd_verbose, LOG_DEBUG, CFSTR("vm_deallocate(): %s"), mach_error_string(status));
-               /* non-fatal???, proceed */
-       }
-       key = CFPropertyListCreateFromXMLData(NULL,
-                                             xmlKey,
-                                             kCFPropertyListImmutable,
-                                             &xmlError);
-       CFRelease(xmlKey);
-       if (!key) {
-               if (xmlError) {
-                       SCLog(_configd_verbose, LOG_DEBUG,
-                              CFSTR("CFPropertyListCreateFromXMLData() key: %@"),
-                              xmlError);
-                       CFRelease(xmlError);
-               }
+       if (!_SCUnserialize((CFPropertyListRef *)&key, (void *)keyRef, keyLen)) {
                *sc_status = kSCStatusFailed;
                return KERN_SUCCESS;
-       } else if (!isA_CFString(key)) {
+       }
+
+       if (!isA_CFString(key)) {
+               CFRelease(key);
                *sc_status = kSCStatusInvalidArgument;
                return KERN_SUCCESS;
        }