diff options
| author | glass <glass@NetBSD.org> | 1994-03-16 02:11:31 +0000 |
|---|---|---|
| committer | glass <glass@NetBSD.org> | 1994-03-16 02:11:31 +0000 |
| commit | 3fb497653d34cde8706b0e446e52182df5bc4ae7 (patch) | |
| tree | 378207336652cf6132b6412b0e6c3f105621d985 /usr.sbin/sendmail/src/envelope.c | |
| parent | c0ae496079e5f8f6af13afb704a68b285f4d14b4 (diff) | |
sendmail 8.6.7. fixes recently discovered security hole
Diffstat (limited to 'usr.sbin/sendmail/src/envelope.c')
| -rw-r--r-- | usr.sbin/sendmail/src/envelope.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/usr.sbin/sendmail/src/envelope.c b/usr.sbin/sendmail/src/envelope.c index 3048ac3dc3a..14656f0d7ee 100644 --- a/usr.sbin/sendmail/src/envelope.c +++ b/usr.sbin/sendmail/src/envelope.c @@ -33,11 +33,10 @@ */ #ifndef lint -static char sccsid[] = "@(#)envelope.c 8.28 (Berkeley) 1/9/94"; +static char sccsid[] = "@(#)envelope.c 8.33 (Berkeley) 2/10/94"; #endif /* not lint */ #include "sendmail.h" -#include <sys/time.h> #include <pwd.h> /* @@ -585,7 +584,7 @@ setsender(from, e, delimptr, internal) */ if (bitset(EF_QUEUERUN, e->e_flags) || OpMode == MD_SMTP || - OpMode == MD_DAEMON) + OpMode == MD_ARPAFTP || OpMode == MD_DAEMON) realname = from; if (realname == NULL || realname[0] == '\0') realname = username(); @@ -694,9 +693,11 @@ setsender(from, e, delimptr, internal) ** Process passwd file entry. */ - /* extract home directory */ - e->e_from.q_home = newstr(pw->pw_dir); + if (strcmp(pw->pw_dir, "/") == 0) + e->e_from.q_home = newstr(""); + else + e->e_from.q_home = newstr(pw->pw_dir); define('z', e->e_from.q_home, e); /* extract user and group id */ @@ -720,7 +721,12 @@ setsender(from, e, delimptr, internal) else if (!internal && OpMode != MD_DAEMON) { if (e->e_from.q_home == NULL) + { e->e_from.q_home = getenv("HOME"); + if (e->e_from.q_home != NULL && + strcmp(e->e_from.q_home, "/") == 0) + e->e_from.q_home++; + } e->e_from.q_uid = RealUid; e->e_from.q_gid = RealGid; e->e_from.q_flags |= QGOODUID; |
