Projects
Browse Source     Search     Timeline     Wiki

Changeset 23487

Show
Ignore:
Timestamp:
2008-01-18 13:24:30 (9 months ago)
Author:
zarzycki@…
Message:

<rdar://problem/5653227> work with Seatbelt to provide access control on spawn_via_launchd

Location:
branches/SULeopard/launchd/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/SULeopard/launchd/src/launchd_core_logic.c

    r23485 r23487  
    362362                     wait4pipe_eof:1, sent_sigkill:1, debug_before_kill:1, weird_bootstrap:1, start_on_mount:1, 
    363363                     per_user:1, hopefully_exits_first:1, deny_unknown_mslookups:1, unload_at_mig_return:1, abandon_pg:1, 
    364                      poll_for_vfs_changes:1, internal_exc_handler:1, can_kickstart:1; 
     364                     poll_for_vfs_changes:1, internal_exc_handler:1, deny_job_creation:1; 
    365365        const char label[0]; 
    366366}; 
     
    15761576 
    15771577        switch (key[0]) { 
    1578         case 'c': 
    1579         case 'C': 
    1580                 if (strcasecmp(key, LAUNCH_JOBPOLICY_CANKICKSTARTOTHERJOBS) == 0) { 
    1581                         j->can_kickstart = launch_data_get_bool(obj); 
     1578        case 'd': 
     1579        case 'D': 
     1580                if (strcasecmp(key, LAUNCH_JOBPOLICY_DENYCREATINGOTHERJOBS) == 0) { 
     1581                        j->deny_job_creation = launch_data_get_bool(obj); 
    15821582                        found_key = true; 
    15831583                } 
     
    51415141        } 
    51425142 
     5143        if (unlikely(j->deny_job_creation)) { 
     5144                return BOOTSTRAP_NOT_PRIVILEGED; 
     5145        } 
     5146 
    51435147        runtime_get_caller_creds(&ldc); 
    51445148 
     
    64256429        } 
    64266430 
    6427         runtime_get_caller_creds(&ldc); 
    6428  
    6429         if (!j->can_kickstart || (ldc.euid != 0 && ldc.euid != geteuid())) { 
    6430                 return BOOTSTRAP_NOT_PRIVILEGED; 
    6431         } 
    6432  
    64336431        if (unlikely(!(otherj = job_find(targetlabel)))) { 
    64346432                return BOOTSTRAP_UNKNOWN_SERVICE; 
     6433        } 
     6434 
     6435        runtime_get_caller_creds(&ldc); 
     6436 
     6437        if (ldc.euid != 0 && ldc.euid != geteuid() 
     6438#if TARGET_OS_EMBEDDED 
     6439                        && j->username && otherj->username 
     6440                        && strcmp(j->username, otherj->username) != 0 
     6441#endif 
     6442                        ) { 
     6443                return BOOTSTRAP_NOT_PRIVILEGED; 
    64356444        } 
    64366445 
     
    65216530        if (!launchd_assumes(j != NULL)) { 
    65226531                return BOOTSTRAP_NO_MEMORY; 
     6532        } 
     6533 
     6534        if (unlikely(j->deny_job_creation)) { 
     6535                return BOOTSTRAP_NOT_PRIVILEGED; 
    65236536        } 
    65246537 
  • branches/SULeopard/launchd/src/liblaunch_public.h

    r23485 r23487  
    102102#define LAUNCH_JOBKEY_POLICIES                  "Policies" 
    103103 
    104 #define LAUNCH_JOBPOLICY_CANKICKSTARTOTHERJOBS  "CanKickStartOtherJobs" 
     104#define LAUNCH_JOBPOLICY_DENYCREATINGOTHERJOBS  "DenyCreatingOtherJobs" 
    105105 
    106106#define LAUNCH_JOBINETDCOMPATIBILITY_WAIT       "Wait"