X-Git-Url: https://git.saurik.com/apple/configd.git/blobdiff_plain/009ee3c6fe2929a4c90ae5c9eb1925573e17956b..d94708881e41bd90afd74b1a1dd0524d039ba3f7:/SystemConfiguration.fproj/SCDConsoleUser.c diff --git a/SystemConfiguration.fproj/SCDConsoleUser.c b/SystemConfiguration.fproj/SCDConsoleUser.c index 06c2858..35a2cc5 100644 --- a/SystemConfiguration.fproj/SCDConsoleUser.c +++ b/SystemConfiguration.fproj/SCDConsoleUser.c @@ -1,10 +1,8 @@ /* - * 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@ * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. - * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -41,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 @@ -84,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); @@ -141,7 +130,6 @@ SCDynamicStoreCopyConsoleUser(SCDynamicStoreRef store, done : - if (tempSession) CFRelease(store); if (dict) CFRelease(dict); return consoleUser; } @@ -153,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); @@ -177,7 +152,7 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store) info = CFDictionaryGetValue(dict, kSCPropUsersConsoleSessionInfo); info = isA_CFArray(info); - if (!info) { + if (info == NULL) { _SCErrorSet(kSCStatusNoKey); goto done; } @@ -186,7 +161,6 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store) done : - if (tempSession) CFRelease(store); if (dict) CFRelease(dict); return info; } @@ -202,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; } @@ -228,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); @@ -248,7 +214,6 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef store, if (dict) CFRelease(dict); if (key) CFRelease(key); - if (tempSession) CFRelease(store); return ok; } @@ -263,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); @@ -306,6 +258,5 @@ SCDynamicStoreSetConsoleUser(SCDynamicStoreRef store, if (dict) CFRelease(dict); if (key) CFRelease(key); - if (tempSession) CFRelease(store); return ok; }