Index: atd.c =================================================================== --- atd.c.orig +++ atd.c @@ -663,15 +663,17 @@ run_file(const char *filename, uid_t uid if (unlink(filename) == -1) syslog(LOG_WARNING, "Warning: removing output file for job %li failed: %s", jobno, strerror(errno)); #ifdef WITH_PAM + PRIV_START pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT ); pam_close_session(pamh, PAM_SILENT); pam_end(pamh, PAM_ABORT); closelog(); openlog("atd", LOG_PID, LOG_ATD); + PRIV_END #endif /* The job is now finished. We can delete its input file. */ chdir(ATJOB_DIR); @@ -784,15 +786,17 @@ run_file(const char *filename, uid_t uid { /* Parent */ waitpid(mail_pid, (int *) NULL, 0); } #ifdef WITH_PAM + PRIV_START pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT ); pam_close_session(pamh, PAM_SILENT); pam_end(pamh, PAM_ABORT); closelog(); openlog("atd", LOG_PID, LOG_ATD); + PRIV_END #endif } exit(EXIT_SUCCESS); }