[BACK]Return to yp_passwd.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / passwd

Diff for /src/usr.bin/passwd/Attic/yp_passwd.c between version 1.24 and 1.25

version 1.24, 2003/06/03 02:56:14 version 1.25, 2004/02/20 21:24:57
Line 63 
Line 63 
 extern void     kbintr(int);  extern void     kbintr(int);
   
 char            *ypgetnewpasswd(struct passwd *, login_cap_t *, char **);  char            *ypgetnewpasswd(struct passwd *, login_cap_t *, char **);
 struct passwd   *ypgetpwnam(char *);  struct passwd   *ypgetpwnam(char *, int);
   
 char *domain;  char *domain;
   
Line 85 
Line 85 
 yp_passwd(char *username)  yp_passwd(char *username)
 {  {
         struct yppasswd yppasswd;          struct yppasswd yppasswd;
         int r, rpcport, status;          int r, rpcport, status, secure=0;
         struct passwd *pw;          struct passwd *pw;
         struct timeval tv;          struct timeval tv;
         login_cap_t *lc;          login_cap_t *lc;
Line 106 
Line 106 
          * Find the host for the passwd map; it should be running           * Find the host for the passwd map; it should be running
          * the daemon.           * the daemon.
          */           */
         if ((r = yp_master(domain, "passwd.byname", &master)) != 0) {          if ((r = yp_master(domain, "master.passwd.byname", &master)) == 0) {
                   secure=1;
           } else if ((r = yp_master(domain, "passwd.byname", &master)) != 0) {
                 warnx("can't find the master YP server. Reason: %s",                  warnx("can't find the master YP server. Reason: %s",
                     yperr_string(r));                      yperr_string(r));
                 return (1);                  return (1);
Line 131 
Line 133 
         }          }
   
         /* Get user's login identity */          /* Get user's login identity */
         if (!(pw = ypgetpwnam(username))) {          if (!(pw = ypgetpwnam(username, secure))) {
                 warnx("unknown user %s.", username);                  warnx("unknown user %s.", username);
                 return (1);                  return (1);
         }          }
Line 257 
Line 259 
 }  }
   
 struct passwd *  struct passwd *
 interpret(struct passwd *pwent, char *line)  interpret(struct passwd *pwent, char *line, int secure)
 {  {
         char    *p = line;          char    *p = line;
   
Line 283 
Line 285 
         p = pwskip(p);          p = pwskip(p);
         pwent->pw_gid = (gid_t)strtoul(p, NULL, 10);          pwent->pw_gid = (gid_t)strtoul(p, NULL, 10);
         p = pwskip(p);          p = pwskip(p);
           if ( secure == 1 ) {
                   pwent->pw_class = p;
                   p = pwskip(p);
                   pwent->pw_change = (time_t)strtoul(p, NULL, 10);
                   p = pwskip(p);
                   pwent->pw_expire = (time_t)strtoul(p, NULL, 10);
                   p = pwskip(p);
           }
         pwent->pw_gecos = p;          pwent->pw_gecos = p;
         p = pwskip(p);          p = pwskip(p);
         pwent->pw_dir = p;          pwent->pw_dir = p;
Line 297 
Line 307 
 static char *__yplin;  static char *__yplin;
   
 struct passwd *  struct passwd *
 ypgetpwnam(char *nam)  ypgetpwnam(char *nam, int secure)
 {  {
         static struct passwd pwent;          static struct passwd pwent;
         int reason, vallen;          int reason, vallen;
         char *val;          char *val;
   
         reason = yp_match(domain, "passwd.byname", nam, strlen(nam),          reason = yp_match(domain,
             &val, &vallen);                            secure ? "master.passwd.byname" : "passwd.byname",
                             nam, strlen(nam), &val, &vallen);
         switch (reason) {          switch (reason) {
         case 0:          case 0:
                 break;                  break;
Line 321 
Line 332 
         strlcpy(__yplin, val, vallen + 1);          strlcpy(__yplin, val, vallen + 1);
         free(val);          free(val);
   
         return (interpret(&pwent, __yplin));          return (interpret(&pwent, __yplin, secure));
 }  }
   
 #endif  /* YP */  #endif  /* YP */

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25