Projects
Browse Source     Search     Timeline     Wiki

Changeset 23131

Show
Ignore:
Timestamp:
03/04/07 15:59:52 (21 months ago)
Author:
zarzycki@…
Message:

<rdar://problem/4421331> Per session launchd deployment for CLI / PAM sessions

Location:
trunk/launchd/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/liblaunch.c

    r23130 r23131  
    4141#include "libbootstrap_public.h" 
    4242#include "libvproc_public.h" 
     43#include "libvproc_private.h" 
    4344#include "libvproc_internal.h" 
    4445 
     
    11641165load_launchd_jobs_at_loginwindow_prompt(int flags __attribute__((unused)), ...) 
    11651166{ 
    1166         _vproc_move_subset_to_user("LoginWindow"); 
     1167        _vprocmgr_move_subset_to_user(geteuid() ? geteuid() : getuid(), "LoginWindow"); 
    11671168} 
    11681169 
     
    11721173        mach_port_t bezel_ui_server; 
    11731174        struct stat sb; 
    1174  
    1175         if (_vproc_move_subset_to_user("Aqua")) { 
     1175        uid_t target_user = geteuid() ? geteuid() : getuid(); 
     1176 
     1177        if (_vprocmgr_move_subset_to_user(target_user, "Aqua")) { 
    11761178                return -1; 
    11771179        } 
     
    11821184 
    11831185        if (!(stat(BEZEL_UI_PLIST, &sb) == 0 && S_ISREG(sb.st_mode))) { 
    1184                 if (bootstrap_create_server(bootstrap_port, BEZEL_UI_PATH, 0, true, &bezel_ui_server) == BOOTSTRAP_SUCCESS) { 
     1186                if (bootstrap_create_server(bootstrap_port, BEZEL_UI_PATH, target_user, true, &bezel_ui_server) == BOOTSTRAP_SUCCESS) { 
    11851187                        mach_port_t srv; 
    11861188 
  • trunk/launchd/src/libvproc.c

    r23130 r23131  
    4848 
    4949vproc_err_t 
    50 _vproc_move_subset_to_user(char *session_type) 
     50_vprocmgr_move_subset_to_user(uid_t target_user, char *session_type) 
    5151{ 
    5252        kern_return_t kr = 1; 
    5353        mach_port_t puc = 0, which_port = bootstrap_port; 
    5454 
    55         if ((getuid() || geteuid()) && vproc_mig_lookup_per_user_context(bootstrap_port, 0, &puc) == 0) { 
     55        if (target_user && vproc_mig_lookup_per_user_context(bootstrap_port, target_user, &puc) == 0) { 
    5656                which_port = puc; 
    5757        } 
     
    6363        } 
    6464 
    65         return kr == 0 ? NULL : (vproc_err_t)_vproc_move_subset_to_user; 
     65        return kr == 0 ? NULL : (vproc_err_t)_vprocmgr_move_subset_to_user; 
    6666} 
    6767 
  • trunk/launchd/src/libvproc_internal.h

    r23130 r23131  
    5858kern_return_t _vprocmgr_getsocket(name_t); 
    5959 
    60 vproc_err_t _vproc_move_subset_to_user(char *session_type); 
    61  
    6260void _vproc_logv(int pri, int err, const char *msg, va_list ap); 
    6361 
  • trunk/launchd/src/libvproc_private.h

    r22932 r23131  
    2121 */ 
    2222 
     23#include <sys/types.h> 
    2324#include <sys/cdefs.h> 
    2425#include <sys/syslog.h> 
     
    3536void _vproc_log_error(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3))); 
    3637 
     38vproc_err_t _vprocmgr_move_subset_to_user(uid_t target_user, char *session_type); 
     39 
    3740#pragma GCC visibility pop 
    3841