]> git.saurik.com Git - apple/configd.git/blobdiff - SystemConfiguration.fproj/SCDConsoleUser.c
configd-1061.40.2.tar.gz
[apple/configd.git] / SystemConfiguration.fproj / SCDConsoleUser.c
index 06c2858bbf352dffed5d9bf494920caf2f960087..35a2cc5bfa2f2ad574e2bf9bb3cc5c34fb094319 100644 (file)
@@ -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@
  * 
  *
  * @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
  * 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
 #include <SystemConfiguration/SCPrivate.h>
 
 
 #include <SystemConfiguration/SCPrivate.h>
 
 
-#ifndef        kSCPropUsersConsoleUserName
+#undef kSCPropUsersConsoleUserName
 #define        kSCPropUsersConsoleUserName     CFSTR("Name")
 #define        kSCPropUsersConsoleUserName     CFSTR("Name")
-#endif
 
 
-#ifndef        kSCPropUsersConsoleUserUID
+#undef kSCPropUsersConsoleUserUID
 #define        kSCPropUsersConsoleUserUID      CFSTR("UID")
 #define        kSCPropUsersConsoleUserUID      CFSTR("UID")
-#endif
 
 
-#ifndef        kSCPropUsersConsoleUserGID
+#undef kSCPropUsersConsoleUserGID
 #define        kSCPropUsersConsoleUserGID      CFSTR("GID")
 #define        kSCPropUsersConsoleUserGID      CFSTR("GID")
-#endif
 
 
-#ifndef        kSCPropUsersConsoleSessionInfo
+#undef kSCPropUsersConsoleSessionInfo
 #define        kSCPropUsersConsoleSessionInfo  CFSTR("SessionInfo")
 #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
 
 
 CFStringRef
@@ -84,19 +86,6 @@ SCDynamicStoreCopyConsoleUser(SCDynamicStoreRef      store,
        CFStringRef             consoleUser     = NULL;
        CFDictionaryRef         dict            = NULL;
        CFStringRef             key;
        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);
 
        key  = SCDynamicStoreKeyCreateConsoleUser(NULL);
        dict = SCDynamicStoreCopyValue(store, key);
@@ -141,7 +130,6 @@ SCDynamicStoreCopyConsoleUser(SCDynamicStoreRef     store,
 
     done :
 
 
     done :
 
-       if (tempSession)        CFRelease(store);
        if (dict)               CFRelease(dict);
        return consoleUser;
 }
        if (dict)               CFRelease(dict);
        return consoleUser;
 }
@@ -153,19 +141,6 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store)
        CFDictionaryRef         dict            = NULL;
        CFArrayRef              info            = NULL;
        CFStringRef             key;
        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);
 
        key  = SCDynamicStoreKeyCreateConsoleUser(NULL);
        dict = SCDynamicStoreCopyValue(store, key);
@@ -177,7 +152,7 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store)
 
        info = CFDictionaryGetValue(dict, kSCPropUsersConsoleSessionInfo);
        info = isA_CFArray(info);
 
        info = CFDictionaryGetValue(dict, kSCPropUsersConsoleSessionInfo);
        info = isA_CFArray(info);
-       if (!info) {
+       if (info == NULL) {
                _SCErrorSet(kSCStatusNoKey);
                goto done;
        }
                _SCErrorSet(kSCStatusNoKey);
                goto done;
        }
@@ -186,7 +161,6 @@ SCDynamicStoreCopyConsoleInformation(SCDynamicStoreRef store)
 
     done :
 
 
     done :
 
-       if (tempSession)        CFRelease(store);
        if (dict)               CFRelease(dict);
        return info;
 }
        if (dict)               CFRelease(dict);
        return info;
 }
@@ -202,23 +176,9 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef      store,
        CFStringRef             consoleUser;
        CFMutableDictionaryRef  dict            = NULL;
        CFStringRef             key             = SCDynamicStoreKeyCreateConsoleUser(NULL);
        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;
        }
                ok = SCDynamicStoreRemoveValue(store, key);
                goto done;
        }
@@ -228,19 +188,25 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef     store,
                                         &kCFTypeDictionaryKeyCallBacks,
                                         &kCFTypeDictionaryValueCallBacks);
 
                                         &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);
 
 
        ok = SCDynamicStoreSetValue(store, key, dict);
 
@@ -248,7 +214,6 @@ SCDynamicStoreSetConsoleInformation(SCDynamicStoreRef       store,
 
        if (dict)               CFRelease(dict);
        if (key)                CFRelease(key);
 
        if (dict)               CFRelease(dict);
        if (key)                CFRelease(key);
-       if (tempSession)        CFRelease(store);
        return ok;
 }
 
        return ok;
 }
 
@@ -263,20 +228,7 @@ SCDynamicStoreSetConsoleUser(SCDynamicStoreRef     store,
        CFMutableDictionaryRef  dict            = NULL;
        CFStringRef             key             = SCDynamicStoreKeyCreateConsoleUser(NULL);
        CFNumberRef             num;
        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);
 
        if (user == NULL) {
                ok = SCDynamicStoreRemoveValue(store, key);
@@ -306,6 +258,5 @@ SCDynamicStoreSetConsoleUser(SCDynamicStoreRef      store,
 
        if (dict)               CFRelease(dict);
        if (key)                CFRelease(key);
 
        if (dict)               CFRelease(dict);
        if (key)                CFRelease(key);
-       if (tempSession)        CFRelease(store);
        return ok;
 }
        return ok;
 }