-
-#define APPNAMEWORKAROUND_KEY CFSTR("WorkaroundAppNames")
-#define APPNAMEWORKAROUND_DOMAIN CFSTR("com.apple.security")
-
-static bool tsCheckAppNameWorkaround(const char *name)
-{
- bool result = false;
- CFIndex idx, count;
- CFStringRef str =
- CFStringCreateWithCString (NULL, name, kCFStringEncodingUTF8);
- CFArrayRef value = (CFArrayRef)
- CFPreferencesCopyValue (APPNAMEWORKAROUND_KEY,
- APPNAMEWORKAROUND_DOMAIN,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- if (!str || !value ||
- !(CFArrayGetTypeID() == CFGetTypeID(value))) {
- goto cleanup;
- }
- count = CFArrayGetCount(value);
- for (idx = 0; idx < count; idx++) {
- CFStringRef appstr = (CFStringRef) CFArrayGetValueAtIndex(value, idx);
- if (!(appstr) || !(CFStringGetTypeID() == CFGetTypeID(appstr))) {
- continue;
- }
- if (!CFStringCompare(str, appstr, 0)) {
- result = true;
- break;
- }
- }
-
-cleanup:
- if (str) {
- CFRelease(str);
- }
- if (value) {
- CFRelease(value);
- }
- return result;
-}