X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..641423b6670d8656d5daeaf988e7d307fb6c1ebc:/OSX/libsecurity_utilities/lib/cfmunge.cpp?ds=inline diff --git a/OSX/libsecurity_utilities/lib/cfmunge.cpp b/OSX/libsecurity_utilities/lib/cfmunge.cpp index d2c6a4dc..b3776ed5 100644 --- a/OSX/libsecurity_utilities/lib/cfmunge.cpp +++ b/OSX/libsecurity_utilities/lib/cfmunge.cpp @@ -289,7 +289,18 @@ CFTypeRef CFMake::makearray() { ++format; // next '[' next('!'); // indicates mutable (currently always) - CFMutableArrayRef array = makeCFMutableArray(0); + CFMutableArrayRef array = NULL; + if (next('+')) { // {+%O, => copy array argument, then proceed + if (next('%') && next('O')) { + CFArrayRef source = va_arg(args, CFArrayRef); + array = CFArrayCreateMutableCopy(allocator, 0, source); + if (next('}')) + return array; + } else + return NULL; // bad syntax + } else { + array = makeCFMutableArray(0); + } while (next() != ']') { CFTypeRef value = make(); if (value == NULL) {