123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- $OpenBSD: patch-pop3_session_c,v 1.1.1.1 2004/11/08 21:57:05 naddy Exp $
- --- pop3_session.c.orig Sun Aug 17 19:44:55 2003
- +++ pop3_session.c Fri Aug 27 01:45:07 2004
- @@ -35,6 +35,7 @@
-
- extern const char * ssl_certfile;
- extern const char * ssl_keyfile;
- +extern const char * group_name;
- extern const char * local_mbox;
- extern char real_username[MAXLINE+1];
- extern char real_maildrop[MAXLINE+1];
- @@ -45,8 +46,17 @@ extern const char * mailspool;
- int authenticate(char * username, char * password);
- void show_uidl(int fd, char * line);
-
- -static void do_remove_lock(void) {
- +static void do_remove_lock(int fd) {
- do_cleanup();
- + if (remove_lock(mdl)) {
- + syslog(LOG_ERR,"unable to unlink lock file %s : %m",mdl);
- + write_line(fd,"unable to unlink lock file - see syslog\r\n");
- + exit(EXIT_FAILURE);
- + }
- +}
- +
- +static void cleanup_before_exit(void) {
- + do_cleanup();
- remove_lock(mdl);
- }
-
- @@ -64,8 +74,9 @@ static void print_capa(int fd) {
-
-
- static void sig_handler(int signo) {
- - remove_lock(mdl);
- syslog(LOG_INFO,"%s: %u", "caught signal",signo);
- + if (remove_lock(mdl))
- + syslog(LOG_ERR,"unable to unlink lock file for user %s : %m",mdl);
- exit(EXIT_FAILURE);
- }
-
- @@ -227,21 +238,21 @@ void pop3_session(int fd) {
-
- mdl = maildrop;
-
- - g_inf = getgrnam("mail");
- + g_inf = getgrnam(group_name);
- if (g_inf==NULL) {
- - syslog(LOG_ERR,"%s","group 'mail' not found");
- - write_line(fd,"-ERR [SYS/TEMP] group 'mail' not found\r\n");
- + syslog(LOG_ERR,"group '%s' not found",group_name);
- + write_line(fd,"-ERR [SYS/TEMP] group not found\r\n");
- exit(EXIT_FAILURE);
- }
- if (setegid(g_inf->gr_gid)!=0 && real_username[0] == 0) {
- syslog(LOG_ERR,"%s: %u: %s","setegid() failed",g_inf->gr_gid,strerror(errno));
- - write_line(fd,"-ERR [SYS/TEMP] failed to join 'mail' group (setegid)\r\n");
- + write_line(fd,"-ERR [SYS/TEMP] failed to join group (setegid)\r\n");
- exit(EXIT_FAILURE);
- }
-
- if (setgid(g_inf->gr_gid)!=0 && real_username[0] == 0) {
- syslog(LOG_ERR,"%s: %u: %s","setgid() failed",g_inf->gr_gid,strerror(errno));
- - write_line(fd,"-ERR [SYS/TEMP] failed to join 'mail' group (setgid)\r\n");
- + write_line(fd,"-ERR [SYS/TEMP] failed to join group (setgid)\r\n");
- exit(EXIT_FAILURE);
- }
-
- @@ -258,18 +269,18 @@ void pop3_session(int fd) {
- if (setuid(u_inf->pw_uid)!=0) {
- syslog(LOG_ERR,"%s: %u: %s","setuid() failed",u_inf->pw_uid,strerror(errno));
- write_line(fd,"-ERR [SYS/TEMP] failed to set user identity\r\n");
- - do_remove_lock();
- + do_remove_lock(fd);
- exit(EXIT_FAILURE);
- }
-
- if (seteuid(u_inf->pw_uid)!=0) {
- syslog(LOG_ERR,"%s: %u: %s","seteuid() failed",u_inf->pw_uid,strerror(errno));
- write_line(fd,"-ERR [SYS/TEMP] failed to set effective user identity\r\n");
- - do_remove_lock();
- + do_remove_lock(fd);
- exit(EXIT_FAILURE);
- }
-
- - if (atexit(do_remove_lock)!=0) {
- + if (atexit(cleanup_before_exit)!=0) {
- syslog(LOG_WARNING,"%s: %s","atexit() failed; lock files may fail to expire",strerror(errno));
- }
-
- @@ -278,7 +289,7 @@ void pop3_session(int fd) {
- if (process_mails(maildrop)==0) {
- write_line(fd,"-ERR [SYS/PERM] failed to scan maildrop contents\r\n");
- do_cleanup();
- - do_remove_lock();
- + do_remove_lock(fd);
- exit(EXIT_FAILURE);
- }
-
- @@ -334,5 +345,8 @@ void pop3_session(int fd) {
- do_update(maildrop);
- }
- do_cleanup();
- - remove_lock(maildrop);
- + if (remove_lock(maildrop)) {
- + syslog(LOG_ERR,"unable to unlink lock file %s : %m",maildrop);
- + exit(EXIT_FAILURE);
- + }
- }
|