]>
git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSMacOSX/mdns_objects/mdns_xpc.c
3 * Copyright (c) 2020 Apple Inc. All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * https://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 #include <CoreFoundation/CFXPCBridge.h>
21 #include <CoreUtils/CoreUtils.h>
23 //======================================================================================================================
24 // MARK: - Public Functions
27 mdns_xpc_create_dictionary_from_plist_data(const uint8_t * const bytes
, const size_t length
, OSStatus
* const out_error
)
29 xpc_object_t dictionary
= NULL
;
30 CFPropertyListRef plist
= NULL
;
32 CFDataRef data
= CFDataCreate(NULL
, bytes
, (CFIndex
)length
);
33 require_action_quiet(data
, exit
, err
= kNoMemoryErr
);
35 plist
= CFPropertyListCreateWithData(NULL
, data
, kCFPropertyListImmutable
, NULL
, NULL
);
37 require_action_quiet(plist
, exit
, err
= kFormatErr
);
38 require_action_quiet(CFGetTypeID(plist
) == CFDictionaryGetTypeID(), exit
, err
= kTypeErr
);
40 dictionary
= _CFXPCCreateXPCObjectFromCFObject(plist
);
41 require_action_quiet(dictionary
, exit
, err
= kUnknownErr
);