From d1b553243efbd59dfd83f919ef96d160fa340d07 Mon Sep 17 00:00:00 2001 From: Dirk Meyer Date: Tue, 8 Oct 2002 15:29:02 +0000 Subject: Update pkg-message for local paths and uucp. Add targets for easy install: root-sasldb, tls-install Small Security Fix, see http://www.sendmail.org/smrsh.adv.txt --- mail/sendmail812/files/patch-smrsh.c | 63 ++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 mail/sendmail812/files/patch-smrsh.c (limited to 'mail/sendmail812/files/patch-smrsh.c') diff --git a/mail/sendmail812/files/patch-smrsh.c b/mail/sendmail812/files/patch-smrsh.c new file mode 100644 index 000000000000..f838f4111e61 --- /dev/null +++ b/mail/sendmail812/files/patch-smrsh.c @@ -0,0 +1,63 @@ +Index: smrsh.c +=================================================================== +RCS file: /cvs/smrsh/smrsh.c,v +retrieving revision 8.58 +diff -u -r8.58 smrsh.c +--- smrsh/smrsh.c 25 May 2002 02:41:31 -0000 8.58 ++++ smrsh/smrsh.c 24 Sep 2002 23:58:16 -0000 +@@ -57,6 +57,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -145,6 +147,7 @@ + char *newenv[2]; + char pathbuf[1000]; + char specialbuf[32]; ++ struct stat st; + + #ifndef DEBUG + # ifndef LOG_MAIL +@@ -302,6 +305,38 @@ + (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, + "Trying %s\n", cmdbuf); + #endif /* DEBUG */ ++ if (stat(cmdbuf, &st) < 0) ++ { ++ /* can't stat it */ ++ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, ++ "%s: %s not available for sendmail programs (stat failed)\n", ++ prg, cmd); ++ if (p != NULL) ++ *p = ' '; ++#ifndef DEBUG ++ syslog(LOG_CRIT, "uid %d: attempt to use %s (stat failed)", ++ (int) getuid(), cmd); ++#endif /* ! DEBUG */ ++ exit(EX_UNAVAILABLE); ++ } ++ if (!S_ISREG(st.st_mode) ++#ifdef S_ISLNK ++ && !S_ISLNK(st.st_mode) ++#endif /* S_ISLNK */ ++ ) ++ { ++ /* can't stat it */ ++ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, ++ "%s: %s not available for sendmail programs (not a file)\n", ++ prg, cmd); ++ if (p != NULL) ++ *p = ' '; ++#ifndef DEBUG ++ syslog(LOG_CRIT, "uid %d: attempt to use %s (not a file)", ++ (int) getuid(), cmd); ++#endif /* ! DEBUG */ ++ exit(EX_UNAVAILABLE); ++ } + if (access(cmdbuf, X_OK) < 0) + { + /* oops.... crack attack possiblity */ -- cgit v1.2.3