X-Git-Url: https://git.saurik.com/apple/configd.git/blobdiff_plain/4c5e92e2493bdfbbce40e998f3b607c72c47af2c..d94708881e41bd90afd74b1a1dd0524d039ba3f7:/SystemConfiguration.fproj/SCDConsoleUser.c diff --git a/SystemConfiguration.fproj/SCDConsoleUser.c b/SystemConfiguration.fproj/SCDConsoleUser.c index ad97b87..35a2cc5 100644 --- a/SystemConfiguration.fproj/SCDConsoleUser.c +++ b/SystemConfiguration.fproj/SCDConsoleUser.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2005, 2009, 2011, 2015 Apple Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * @@ -39,28 +39,32 @@ #include -#ifndef kSCPropUsersConsoleUserName +#undef kSCPropUsersConsoleUserName #define kSCPropUsersConsoleUserName CFSTR("Name") -#endif -#ifndef kSCPropUsersConsoleUserUID +#undef kSCPropUsersConsoleUserUID #define kSCPropUsersConsoleUserUID CFSTR("UID") -#endif -#ifndef kSCPropUsersConsoleUserGID +#undef kSCPropUsersConsoleUserGID #define kSCPropUsersConsoleUserGID CFSTR("GID") -#endif -#ifndef kSCPropUsersConsoleSessionInfo +#undef kSCPropUsersConsoleSessionInfo #define kSCPropUsersConsoleSessionInfo CFSTR("SessionInfo") -#endif -const CFStringRef kSCConsoleSessionID = CFSTR("kCGSSessionIDKey"); /* value is CFNumber */ -const CFStringRef kSCConsoleSessionUserName = CFSTR("kCGSSessionUserNameKey"); /* value is CFString */ -const CFStringRef kSCConsoleSessionUID = CFSTR("kCGSSessionUserIDKey"); /* value is CFNumber */ -const CFStringRef kSCConsoleSessionConsoleSet = CFSTR("kCGSSessionConsoleSetKey"); /* value is CFNumber */ -const CFStringRef kSCConsoleSessionOnConsole = CFSTR("kCGSSessionOnConsoleKey"); /* value is CFBoolean */ +// from CoreGraphics (CGSession.h) +const CFStringRef kSCConsoleSessionUserName = CFSTR("kCGSSessionUserNameKey"); /* value is CFString */ +const CFStringRef kSCConsoleSessionUID = CFSTR("kCGSSessionUserIDKey"); /* value is CFNumber (a uid_t) */ +const CFStringRef kSCConsoleSessionConsoleSet = CFSTR("kCGSSessionConsoleSetKey"); /* value is CFNumber */ +const CFStringRef kSCConsoleSessionOnConsole = CFSTR("kCGSSessionOnConsoleKey"); /* value is CFBoolean */ +const CFStringRef kSCConsoleSessionLoginDone = CFSTR("kCGSessionLoginDoneKey"); /* value is CFBoolean */ + +// from CoreGraphics (CGSSession.h) +const CFStringRef kSCConsoleSessionID = CFSTR("kCGSSessionIDKey"); /* value is CFNumber */ + +// for loginwindow +const CFStringRef kSCConsoleSessionSystemSafeBoot = CFSTR("kCGSSessionSystemSafeBoot"); /* value is CFBoolean */ +const CFStringRef kSCConsoleSessionLoginwindowSafeLogin = CFSTR("kCGSSessionLoginwindowSafeLogin"); /* value is CFBoolean */ CFStringRef @@ -82,19 +86,6 @@ SCDynamicStoreCopyConsoleUser(SCDynamicStoreRef store, CFStringRef consoleUser = NULL; CFDictionaryRef dict = NULL; CFStringRef key; - Boolean tempSession = FALSE; - - if (!store) { - store = SCDynamicStoreCreate(NULL, - CFSTR("SCDynamicStoreCopyConsoleUser"), - NULL, - NULL); - if (!store) { - SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed")); - return NULL; - } - tempSession = TRUE; - } key = SCDynamicStoreKeyCreateConsoleUser(NULL); dict = SCDynamicStoreCopyValue(store, key); @@ -139,7 +130,6 @@ SCDynamicStoreCopyConsoleUser(SCDynamicStoreRef store, done : - if (tempSession) CFRelease(store); if (dict) CFRelease(dict); return consoleUser; } @@ -151,19 +141,6 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store) CFDictionaryRef dict = NULL; CFArrayRef info = NULL; CFStringRef key; - Boolean tempSession = FALSE; - - if (!store) { - store = SCDynamicStoreCreate(NULL, - CFSTR("SCDynamicStoreCopyConsoleUser"), - NULL, - NULL); - if (!store) { - SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed")); - return NULL; - } - tempSession = TRUE; - } key = SCDynamicStoreKeyCreateConsoleUser(NULL); dict = SCDynamicStoreCopyValue(store, key); @@ -175,7 +152,7 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store) info = CFDictionaryGetValue(dict, kSCPropUsersConsoleSessionInfo); info = isA_CFArray(info); - if (!info) { + if (info == NULL) { _SCErrorSet(kSCStatusNoKey); goto done; } @@ -184,7 +161,6 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store) done : - if (tempSession) CFRelease(store); if (dict) CFRelease(dict); return info; } @@ -200,23 +176,9 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef store, CFStringRef consoleUser; CFMutableDictionaryRef dict = NULL; CFStringRef key = SCDynamicStoreKeyCreateConsoleUser(NULL); - CFNumberRef num; - Boolean ok = TRUE; - Boolean tempSession = FALSE; - - if (!store) { - store = SCDynamicStoreCreate(NULL, - CFSTR("SCDynamicStoreSetConsoleUser"), - NULL, - NULL); - if (!store) { - SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed")); - return FALSE; - } - tempSession = TRUE; - } + Boolean ok = FALSE; - if (user == NULL) { + if ((user == NULL) && (sessions == NULL)) { ok = SCDynamicStoreRemoveValue(store, key); goto done; } @@ -226,19 +188,25 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef store, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - consoleUser = CFStringCreateWithCString(NULL, user, kCFStringEncodingMacRoman); - CFDictionarySetValue(dict, kSCPropUsersConsoleUserName, consoleUser); - CFRelease(consoleUser); + if (user != NULL) { + CFNumberRef num; - num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&uid); - CFDictionarySetValue(dict, kSCPropUsersConsoleUserUID, num); - CFRelease(num); + consoleUser = CFStringCreateWithCString(NULL, user, kCFStringEncodingMacRoman); + CFDictionarySetValue(dict, kSCPropUsersConsoleUserName, consoleUser); + CFRelease(consoleUser); - num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&gid); - CFDictionarySetValue(dict, kSCPropUsersConsoleUserGID, num); - CFRelease(num); + num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&uid); + CFDictionarySetValue(dict, kSCPropUsersConsoleUserUID, num); + CFRelease(num); + + num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&gid); + CFDictionarySetValue(dict, kSCPropUsersConsoleUserGID, num); + CFRelease(num); + } - CFDictionarySetValue(dict, kSCPropUsersConsoleSessionInfo, sessions); + if (sessions != NULL) { + CFDictionarySetValue(dict, kSCPropUsersConsoleSessionInfo, sessions); + } ok = SCDynamicStoreSetValue(store, key, dict); @@ -246,7 +214,6 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef store, if (dict) CFRelease(dict); if (key) CFRelease(key); - if (tempSession) CFRelease(store); return ok; } @@ -261,20 +228,7 @@ SCDynamicStoreSetConsoleUser(SCDynamicStoreRef store, CFMutableDictionaryRef dict = NULL; CFStringRef key = SCDynamicStoreKeyCreateConsoleUser(NULL); CFNumberRef num; - Boolean ok = TRUE; - Boolean tempSession = FALSE; - - if (!store) { - store = SCDynamicStoreCreate(NULL, - CFSTR("SCDynamicStoreSetConsoleUser"), - NULL, - NULL); - if (!store) { - SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed")); - return FALSE; - } - tempSession = TRUE; - } + Boolean ok = FALSE; if (user == NULL) { ok = SCDynamicStoreRemoveValue(store, key); @@ -304,6 +258,5 @@ SCDynamicStoreSetConsoleUser(SCDynamicStoreRef store, if (dict) CFRelease(dict); if (key) CFRelease(key); - if (tempSession) CFRelease(store); return ok; }