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

Diff for /src/usr.bin/chpass/chpass.c between version 1.23 and 1.24

version 1.23, 2002/06/27 19:02:40 version 1.24, 2002/06/27 19:16:50
Line 68 
Line 68 
 #include "chpass.h"  #include "chpass.h"
 #include "pathnames.h"  #include "pathnames.h"
   
 char tempname[] = __CONCAT(_PATH_VARTMP,"pw.XXXXXXXX");  
 enum { NEWSH, LOADENTRY, EDITENTRY } op;  enum { NEWSH, LOADENTRY, EDITENTRY } op;
 uid_t uid;  uid_t uid;
   
Line 83 
Line 82 
 #endif  #endif
   
 void    baduser(void);  void    baduser(void);
 void    tempcleanup(void);  
 void    kbintr(int);  void    kbintr(int);
 void    usage(void);  void    usage(void);
   
Line 183 
Line 181 
   
         /* Edit the user passwd information if requested. */          /* Edit the user passwd information if requested. */
         if (op == EDITENTRY) {          if (op == EDITENTRY) {
                   char tempname[] = __CONCAT(_PATH_VARTMP,"pw.XXXXXXXX");
   
                 dfd = mkstemp(tempname);                  dfd = mkstemp(tempname);
                 if (dfd == -1 || fcntl(dfd, F_SETFD, 1) == -1)                  if (dfd == -1 || fcntl(dfd, F_SETFD, 1) == -1)
                         pw_error(tempname, 1, 1);                          pw_error(tempname, 1, 1);
                 atexit(tempcleanup);  
                 display(tempname, dfd, pw);                  display(tempname, dfd, pw);
                 edit(tempname, pw);                  edit(tempname, pw);
                   close(dfd);
                   unlink(tempname);
         }          }
   
         /* Drop user's real uid and block all signals to avoid a DoS. */          /* Drop user's real uid and block all signals to avoid a DoS. */
Line 245 
Line 246 
 }  }
   
 void  void
 tempcleanup(void)  
 {  
   
         unlink(tempname);  
 }  
   
 void  
 kbintr(int signo)  kbintr(int signo)
 {  {
         struct iovec iv[5];          struct iovec iv[5];
Line 267 
Line 261 
         iv[4].iov_base = " unchanged\n";          iv[4].iov_base = " unchanged\n";
         iv[4].iov_len = 11;          iv[4].iov_len = 11;
         writev(STDERR_FILENO, iv, 5);          writev(STDERR_FILENO, iv, 5);
   
         if (op == EDITENTRY)  
                 unlink(tempname);  
   
         _exit(1);          _exit(1);
 }  }

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