patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
66 lines
1.8 KiB
Diff
66 lines
1.8 KiB
Diff
Index: contrib/sendmail/smrsh/smrsh.c
|
|
diff -c contrib/sendmail/smrsh/smrsh.c:1.3.6.8 contrib/sendmail/smrsh/smrsh.c:1.3.6.9
|
|
*** contrib/sendmail/smrsh/smrsh.c:1.3.6.8 Mon Sep 2 20:50:13 2002
|
|
--- contrib/sendmail/smrsh/smrsh.c Mon Oct 7 19:53:31 2002
|
|
***************
|
|
*** 59,64 ****
|
|
--- 59,66 ----
|
|
#include <sm/limits.h>
|
|
#include <sm/string.h>
|
|
#include <sys/file.h>
|
|
+ #include <sys/types.h>
|
|
+ #include <sys/stat.h>
|
|
#include <string.h>
|
|
#include <ctype.h>
|
|
#include <errno.h>
|
|
***************
|
|
*** 147,152 ****
|
|
--- 149,155 ----
|
|
char *newenv[2];
|
|
char pathbuf[1000];
|
|
char specialbuf[32];
|
|
+ struct stat st;
|
|
|
|
#ifndef DEBUG
|
|
# ifndef LOG_MAIL
|
|
***************
|
|
*** 304,309 ****
|
|
--- 307,344 ----
|
|
(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 */
|