Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/libbb/change_identity.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 815 by niro, Sat Sep 1 22:45:15 2007 UTC revision 816 by niro, Fri Apr 24 18:33:46 2009 UTC
# Line 30  Line 30 
30    
31  #include "libbb.h"  #include "libbb.h"
32    
   
33  /* Become the user and group(s) specified by PW.  */  /* Become the user and group(s) specified by PW.  */
34  const char *change_identity_e2str(const struct passwd *pw)  void FAST_FUNC change_identity(const struct passwd *pw)
35  {  {
36   if (initgroups(pw->pw_name, pw->pw_gid) == -1)   if (initgroups(pw->pw_name, pw->pw_gid) == -1)
37   return "cannot set groups";   bb_perror_msg_and_die("can't set groups");
38   endgrent(); /* ?? */   endgrent(); /* helps to close a fd used internally by libc */
39   xsetgid(pw->pw_gid);   xsetgid(pw->pw_gid);
40   xsetuid(pw->pw_uid);   xsetuid(pw->pw_uid);
  return NULL;  
 }  
   
 void change_identity(const struct passwd *pw)  
 {  
  const char *err_msg = change_identity_e2str(pw);  
   
  if (err_msg)  
  bb_perror_msg_and_die("%s", err_msg);  
41  }  }

Legend:
Removed from v.815  
changed lines
  Added in v.816