summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/src/main.c')
-rw-r--r--contrib/sendmail/src/main.c67
1 files changed, 54 insertions, 13 deletions
diff --git a/contrib/sendmail/src/main.c b/contrib/sendmail/src/main.c
index 511eb02..38eebbf 100644
--- a/contrib/sendmail/src/main.c
+++ b/contrib/sendmail/src/main.c
@@ -406,9 +406,7 @@ main(argc, argv, envp)
case MD_HOSTSTAT:
case MD_PURGESTAT:
case MD_ARPAFTP:
-#if _FFR_CHECKCONFIG
case MD_CHECKCONFIG:
-#endif /* _FFR_CHECKCONFIG */
OpMode = j;
break;
@@ -645,6 +643,17 @@ main(argc, argv, envp)
sm_printoptions(FFRCompileOptions);
}
+#if STARTTLS
+ if (tTd(0, 14))
+ {
+ /* exit(EX_CONFIG) if different? */
+ sm_dprintf(" OpenSSL: compiled 0x%08x\n",
+ (uint) OPENSSL_VERSION_NUMBER);
+ sm_dprintf(" OpenSSL: linked 0x%08x\n",
+ (uint) SSLeay());
+ }
+#endif /* STARTTLS */
+
/* clear sendmail's environment */
ExternalEnviron = environ;
emptyenviron[0] = NULL;
@@ -2566,6 +2575,38 @@ main(argc, argv, envp)
** Set _ macro in BlankEnvelope before calling newenvelope().
*/
+#if _FFR_XCNCT
+ if (bitnset(D_XCNCT, *p_flags) || bitnset(D_XCNCT_M, *p_flags))
+ {
+ /* copied from getauthinfo() */
+ if (RealHostName == NULL)
+ {
+ RealHostName = newstr(hostnamebyanyaddr(&RealHostAddr));
+ if (strlen(RealHostName) > MAXNAME)
+ RealHostName[MAXNAME] = '\0'; /* XXX - 1 ? */
+ }
+ snprintf(buf, sizeof(buf), "%s [%s]",
+ RealHostName, anynet_ntoa(&RealHostAddr));
+
+ forged = bitnset(D_XCNCT_M, *p_flags);
+ if (forged)
+ {
+ (void) sm_strlcat(buf, " (may be forged)",
+ sizeof(buf));
+ macdefine(&BlankEnvelope.e_macro, A_PERM,
+ macid("{client_resolve}"), "FORGED");
+ }
+
+ /* HACK! variable used only two times right below */
+ authinfo = buf;
+ if (tTd(75, 9))
+ sm_syslog(LOG_INFO, NOQID,
+ "main: where=not_calling_getauthinfo, RealHostAddr=%s",
+ anynet_ntoa(&RealHostAddr));
+ }
+ else
+ /* WARNING: "non-braced" else */
+#endif /* _FFR_XCNCT */
authinfo = getauthinfo(sm_io_getinfo(InChannel, SM_IO_WHAT_FD,
NULL), &forged);
macdefine(&BlankEnvelope.e_macro, A_TEMP, '_', authinfo);
@@ -2622,13 +2663,13 @@ main(argc, argv, envp)
#if NETINET
case AF_INET:
(void) sm_snprintf(pbuf, sizeof(pbuf), "%d",
- RealHostAddr.sin.sin_port);
+ ntohs(RealHostAddr.sin.sin_port));
break;
#endif /* NETINET */
#if NETINET6
case AF_INET6:
(void) sm_snprintf(pbuf, sizeof(pbuf), "%d",
- RealHostAddr.sin6.sin6_port);
+ ntohs(RealHostAddr.sin6.sin6_port));
break;
#endif /* NETINET6 */
default:
@@ -3696,12 +3737,12 @@ drop_privileges(to_real_uid)
GIDSET_T emptygidset[1];
if (tTd(47, 1))
- sm_dprintf("drop_privileges(%d): Real[UG]id=%d:%d, get[ug]id=%d:%d, gete[ug]id=%d:%d, RunAs[UG]id=%d:%d\n",
+ sm_dprintf("drop_privileges(%d): Real[UG]id=%ld:%ld, get[ug]id=%ld:%ld, gete[ug]id=%ld:%ld, RunAs[UG]id=%ld:%ld\n",
(int) to_real_uid,
- (int) RealUid, (int) RealGid,
- (int) getuid(), (int) getgid(),
- (int) geteuid(), (int) getegid(),
- (int) RunAsUid, (int) RunAsGid);
+ (long) RealUid, (long) RealGid,
+ (long) getuid(), (long) getgid(),
+ (long) geteuid(), (long) getegid(),
+ (long) RunAsUid, (long) RunAsGid);
if (to_real_uid)
{
@@ -3776,15 +3817,15 @@ drop_privileges(to_real_uid)
{
if (setgid(RunAsGid) < 0 && (!UseMSP || getegid() != RunAsGid))
{
- syserr("drop_privileges: setgid(%d) failed",
- (int) RunAsGid);
+ syserr("drop_privileges: setgid(%ld) failed",
+ (long) RunAsGid);
rval = EX_OSERR;
}
errno = 0;
if (rval == EX_OK && getegid() != RunAsGid)
{
- syserr("drop_privileges: Unable to set effective gid=%d to RunAsGid=%d",
- (int) getegid(), (int) RunAsGid);
+ syserr("drop_privileges: Unable to set effective gid=%ld to RunAsGid=%ld",
+ (long) getegid(), (long) RunAsGid);
rval = EX_OSERR;
}
}
OpenPOWER on IntegriCloud