Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, October 16, 2026

Diff for libplaton/utils/atomicpop3pass/src/sys/main.c between version 1.1 and 1.2

version 1.1, 2003/01/07 21:59:40 version 1.2, 2003/01/12 14:30:39
Line 1 
Line 1 
 /* Added by Ondrej Jombik <nepto@hot.ee> */  /* Added by Ondrej Jombik <nepto@hot.ee> */
 #include <unistd.h>  #include <unistd.h>
 #include <errno.h>  
 #include <string.h>  #include <string.h>
 #include <syslog.h>  #include <stdlib.h>
   #include <errno.h>
   
 #include "../main.h"  #include "../main.h"
 #include "error.h"  #include "error.h"
 #include "pathexec.h"  #include "pathexec.h"
 #include "prot.h"  #include "prot.h"
   
   #ifndef SYSLOG_LEVEL
   #  error SYSLOG_LEVEL not defined
   #else
   #  if SYSLOG_LEVEL >= 1
   #    include <syslog.h>
   #  endif
   #endif
   
 extern char *crypt();  extern char *crypt();
 #include <pwd.h>  #include <pwd.h>
 static struct passwd *pw;  static struct passwd *pw;
Line 16  static struct passwd *pw;
Line 24  static struct passwd *pw;
 #include "hasspnam.h"  #include "hasspnam.h"
 #undef HASGETSPNAM /* Nepto hack */  #undef HASGETSPNAM /* Nepto hack */
 #ifdef HASGETSPNAM  #ifdef HASGETSPNAM
 #include <shadow.h>  #  include <shadow.h>
 static struct spwd *spw;     static struct spwd *spw;
 #endif  #endif
   
 #include "hasuserpw.h"  #include "hasuserpw.h"
 #ifdef HASUSERPW  #ifdef HASUSERPW
 #include <userpw.h>  #  include <userpw.h>
 static struct userpw *upw;     static struct userpw *upw;
 #endif  #endif
   
 extern char *login;  extern char *login;
Line 48  int main_sys(int argc, char **argv)
Line 56  int main_sys(int argc, char **argv)
                 stored = pw->pw_passwd;                  stored = pw->pw_passwd;
         else {          else {
                 if (errno == error_txtbsy)                  if (errno == error_txtbsy)
                         _exit(111);                          exit(111);
   
                 syslog(LOG_AUTH | LOG_WARNING,  #if SYSLOG_LEVEL >= 5
                                 "atomicpop3pass[sys]: FAILED: unknown username: %s", login);                  /* Value of 5 is used, because this message will appear
                      on every virtual user logon. */
                   syslog(SYSLOG_INFO, "sys: FAILED: unknown username: %s", login);
   #endif
                 return -1;                  return -1;
         }          }
 #ifdef HASUSERPW  #ifdef HASUSERPW
Line 59  int main_sys(int argc, char **argv)
Line 70  int main_sys(int argc, char **argv)
         if (upw)          if (upw)
                 stored = upw->upw_passwd;                  stored = upw->upw_passwd;
         else          else
                 if (errno == error_txtbsy) _exit(111);                  if (errno == error_txtbsy)
                           exit(111);
 #endif  #endif
 #ifdef HASGETSPNAM  #ifdef HASGETSPNAM
         spw = getspnam(login);          spw = getspnam(login);
         if (spw)          if (spw)
                 stored = spw->sp_pwdp;                  stored = spw->sp_pwdp;
         else          else
                 if (errno == error_txtbsy) _exit(111);                  if (errno == error_txtbsy)
                           exit(111);
 #endif  #endif
   
         if (!stored)          if (!stored)
                 _exit(1);                  exit(1);
   
         encrypted = crypt(password, stored);          encrypted = crypt(password, stored);
   
 #if DEBUG  #if SYSLOG_LEVEL >= 9
         syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]: debug:"          syslog(SYSLOG_DEBUG, "sys: debug: login = %s",     login);
                         " login = %s", login);          syslog(SYSLOG_DEBUG, "sys: debug: password = %s",  password);
         syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]: debug:"          syslog(SYSLOG_DEBUG, "sys: debug: stored = %s",    stored);
                         " password = %s", password);          syslog(SYSLOG_DEBUG, "sys: debug: encrypted = %s", encrypted);
         syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]: debug:"  
                         " stored = %s", stored);  
         syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]: debug:"  
                         " encrypted = %s", encrypted);  
 #endif  #endif
   
         /* Here are password compared. */          /* Here are password compared. */
         if (! *stored || strcmp(encrypted, stored)) {          if (! *stored || strcmp(encrypted, stored)) {
   
                 syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]:"  #if SYSLOG_LEVEL >= 3
                                 " FAILED: %s [%s] - password incorrect (%s)"                  syslog(SYSLOG_INFO, "sys: FAILED: %s [%s] - password incorrect (%s)"
                                 " from %s@%s [%s]",                                  " from %s@%s [%s]", login, pw->pw_name, password,
                                 login, pw->pw_name, password,  
                                 remoteinfo, remotehost, remoteip);                                  remoteinfo, remotehost, remoteip);
   #endif
                 return -1;                  return -1;
         }          }
   
Line 101  int main_sys(int argc, char **argv)
Line 109  int main_sys(int argc, char **argv)
         nuke_dynamic_string(&password);          nuke_dynamic_string(&password);
   
         if (prot_gid((int) pw->pw_gid) == -1) {          if (prot_gid((int) pw->pw_gid) == -1) {
                 syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]:"  #if SYSLOG_LEVEL >= 3
                                 " FAILED: %s - protected GID: %d",                  syslog(SYSLOG_INFO, "sys: FAILED: %s - protected GID: %d",
                                 pw->pw_name, (int) pw->pw_gid);                                  pw->pw_name, (int) pw->pw_gid);
                 _exit(1);  #endif
                   exit(1);
         }          }
   
         if (prot_uid((int) pw->pw_uid) == -1) {          if (prot_uid((int) pw->pw_uid) == -1) {
                 syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]:"  #if SYSLOG_LEVEL >= 3
                                 " FAILED: %s - protected UID: %d",                  syslog(SYSLOG_INFO, "sys: FAILED: %s - protected UID: %d",
                                 pw->pw_name, (int) pw->pw_uid);                                  pw->pw_name, (int) pw->pw_uid);
                 _exit(1);  #endif
                   exit(1);
         }          }
   
         if (chdir(pw->pw_dir) == -1) {          if (chdir(pw->pw_dir) == -1) {
                 syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]:"  #if SYSLOG_LEVEL >= 3
                                 " FAILED: %s - unable to change to Mail directory: %s",                  syslog(SYSLOG_INFO,
                                   "sys: FAILED: %s - unable to change to Mail directory: %s",
                                 pw->pw_name, pw->pw_dir);                                  pw->pw_name, pw->pw_dir);
                 _exit(111);  #endif
                   exit(111);
         }          }
   
         if (! pathexec_env("USER", pw->pw_name)          if (! pathexec_env("USER", pw->pw_name)
                         || ! pathexec_env("HOME", pw->pw_dir)                          || ! pathexec_env("HOME", pw->pw_dir)
                         || ! pathexec_env("SHELL", pw->pw_shell)) {                          || ! pathexec_env("SHELL", pw->pw_shell)) {
                 syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]:"  #if SYSLOG_LEVEL >= 3
                                 " FAILED: %s - pathexec_env() failure(s)",                  syslog(SYSLOG_INFO, "sys: FAILED: %s - pathexec_env() failure(s)",
                                 pw->pw_name);                                  pw->pw_name);
                 _exit(111);  #endif
                   exit(111);
         }          }
   
         syslog(LOG_AUTH | LOG_WARNING, "atomicpop3pass[sys]:"  #if SYSLOG_LEVEL >= 3
                         " POP3 user %s : %s logged in from %s@%s [%s]",          syslog(SYSLOG_INFO, "sys: POP3 user %s : %s logged in from %s@%s [%s]",
                         pw->pw_name, pw->pw_dir, remoteinfo, remotehost, remoteip);                          pw->pw_name, pw->pw_dir, remoteinfo, remotehost, remoteip);
   #endif
   
         pathexec(argv + 1);          pathexec(argv + 1);
         /* _exit(111); */          /* exit(111); */
   
         return 0;          return 0;
 }  }
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top