Compare commits
	
		
			No commits in common. "c8" and "c9-beta" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1 +1 @@ | ||||
| SOURCES/sendmail.8.15.2.tar.gz | ||||
| SOURCES/sendmail.8.16.1.tar.gz | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| 5801d4b06f4e38ef228a5954a44d17636eaa5a16 SOURCES/sendmail.8.15.2.tar.gz | ||||
| 748b6dfc47dfbb83ebfdd2e334c87032c4698eab SOURCES/sendmail.8.16.1.tar.gz | ||||
|  | ||||
| @ -1,127 +0,0 @@ | ||||
| diff --git a/sendmail/envelope.c b/sendmail/envelope.c
 | ||||
| index bae6b00..beb91a1 100644
 | ||||
| --- a/sendmail/envelope.c
 | ||||
| +++ b/sendmail/envelope.c
 | ||||
| @@ -323,7 +323,7 @@ dropenvelope(e, fulldrop, split)
 | ||||
|   | ||||
|  			/* don't free, allocated from e_rpool */ | ||||
|  			e->e_message = sm_rpool_strdup_x(e->e_rpool, buf); | ||||
| -			message(buf);
 | ||||
| +			message("%s", buf);
 | ||||
|  			e->e_flags |= EF_CLRQUEUE; | ||||
|  		} | ||||
|  		if (msg_timeout == MSG_NOT_BY) | ||||
| @@ -420,7 +420,7 @@ dropenvelope(e, fulldrop, split)
 | ||||
|  				/* don't free, allocated from e_rpool */ | ||||
|  				e->e_message = sm_rpool_strdup_x(e->e_rpool, | ||||
|  								 buf); | ||||
| -				message(buf);
 | ||||
| +				message("%s", buf);
 | ||||
|  				e->e_flags |= EF_WARNING; | ||||
|  			} | ||||
|  			if (msg_timeout == MSG_WARN_BY) | ||||
| diff --git a/sendmail/parseaddr.c b/sendmail/parseaddr.c
 | ||||
| index 2adb39c..ba99414 100644
 | ||||
| --- a/sendmail/parseaddr.c
 | ||||
| +++ b/sendmail/parseaddr.c
 | ||||
| @@ -218,7 +218,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt)
 | ||||
|  			msg = "Deferring message until queue run"; | ||||
|  		if (tTd(20, 1)) | ||||
|  			sm_dprintf("parseaddr: queueing message\n"); | ||||
| -		message(msg);
 | ||||
| +		message("%s", msg);
 | ||||
|  		if (e->e_message == NULL && e->e_sendmode != SM_DEFER) | ||||
|  			e->e_message = sm_rpool_strdup_x(e->e_rpool, msg); | ||||
|  		a->q_state = QS_QUEUEUP; | ||||
| diff --git a/sendmail/srvrsmtp.c b/sendmail/srvrsmtp.c
 | ||||
| index ba636a8..46c5356 100644
 | ||||
| --- a/sendmail/srvrsmtp.c
 | ||||
| +++ b/sendmail/srvrsmtp.c
 | ||||
| @@ -122,6 +122,26 @@ extern ENVELOPE	BlankEnvelope;
 | ||||
|  #define SKIP_SPACE(s)	while (isascii(*s) && isspace(*s))	\ | ||||
|  				(s)++ | ||||
|   | ||||
| +static inline void
 | ||||
| +message1(fmt)
 | ||||
| +	char *fmt;
 | ||||
| +{
 | ||||
| +	if (strchr(fmt, '%') == NULL)
 | ||||
| +		message(fmt, NULL);
 | ||||
| +	else
 | ||||
| +		message("%s", fmt);
 | ||||
| +}
 | ||||
| +
 | ||||
| +static inline void
 | ||||
| +usrerr1(fmt)
 | ||||
| +	char *fmt;
 | ||||
| +{
 | ||||
| +	if (strchr(fmt, '%') == NULL)
 | ||||
| +		usrerr(fmt, NULL);
 | ||||
| +	else
 | ||||
| +		usrerr("%s", fmt);
 | ||||
| +}
 | ||||
| +
 | ||||
|  /* | ||||
|  **  PARSE_ESMTP_ARGS -- parse EMSTP arguments (for MAIL, RCPT) | ||||
|  ** | ||||
| @@ -578,13 +598,13 @@ static bool	smtp_data __P((SMTP_T *, ENVELOPE *));
 | ||||
|  				bool tsave = QuickAbort;		\ | ||||
|  									\ | ||||
|  				QuickAbort = false;			\ | ||||
| -				usrerr(response);			\
 | ||||
| +				usrerr1(response);			\
 | ||||
|  				QuickAbort = tsave;			\ | ||||
|  				e->e_sendqueue = NULL;			\ | ||||
|  				goto doquit;				\ | ||||
|  			}						\ | ||||
|  			else						\ | ||||
| -				usrerr(response);			\
 | ||||
| +				usrerr1(response);			\
 | ||||
|  			break;						\ | ||||
|  									\ | ||||
|  		  case SMFIR_REJECT:					\ | ||||
| @@ -931,7 +951,7 @@ smtp(nullserver, d_flags, e)
 | ||||
|  	} | ||||
|  	else if (strncmp(nullserver, "421 ", 4) == 0) | ||||
|  	{ | ||||
| -		message(nullserver);
 | ||||
| +		message1(nullserver);
 | ||||
|  		goto doquit; | ||||
|  	} | ||||
|   | ||||
| @@ -1849,7 +1869,7 @@ smtp(nullserver, d_flags, e)
 | ||||
|  				if (nullserver != NULL) | ||||
|  				{ | ||||
|  					if (ISSMTPREPLY(nullserver)) | ||||
| -						usrerr(nullserver);
 | ||||
| +						usrerr1(nullserver);
 | ||||
|  					else | ||||
|  						usrerr("550 5.0.0 %s", | ||||
|  						       nullserver); | ||||
| @@ -2449,7 +2469,7 @@ smtp(nullserver, d_flags, e)
 | ||||
|  					tempfail = true; | ||||
|  					smtp.sm_milterize = false; | ||||
|  					if (response != NULL) | ||||
| -						usrerr(response);
 | ||||
| +						usrerr1(response);
 | ||||
|  					else | ||||
|  						message("421 4.7.0 %s closing connection", | ||||
|  							MyHostName); | ||||
| @@ -3656,7 +3676,7 @@ smtp_data(smtp, e)
 | ||||
|  				(void) extenhsc(response + 4, ' ', e->e_enhsc); | ||||
|  #endif /* _FFR_MILTER_ENHSC */ | ||||
|   | ||||
| -			usrerr(response);
 | ||||
| +			usrerr1(response);
 | ||||
|  			if (strncmp(response, "421 ", 4) == 0 | ||||
|  			    || strncmp(response, "421-", 4) == 0) | ||||
|  			{ | ||||
| @@ -3776,7 +3796,7 @@ smtp_data(smtp, e)
 | ||||
|  			if (ISSMTPCODE(response)) | ||||
|  				(void) extenhsc(response + 4, ' ', e->e_enhsc); | ||||
|  #endif /* _FFR_MILTER_ENHSC */ | ||||
| -			usrerr(response);
 | ||||
| +			usrerr1(response);
 | ||||
|  			if (strncmp(response, "421 ", 4) == 0 | ||||
|  			    || strncmp(response, "421-", 4) == 0) | ||||
|  				rv = false; | ||||
| @ -1,20 +0,0 @@ | ||||
| diff --git a/sendmail/tls.c b/sendmail/tls.c
 | ||||
| index 16cb93f..9338380 100644
 | ||||
| --- a/sendmail/tls.c
 | ||||
| +++ b/sendmail/tls.c
 | ||||
| @@ -1329,13 +1329,8 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar
 | ||||
|  		} | ||||
|   | ||||
|  #if _FFR_TLS_EC | ||||
| -		ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
 | ||||
| -		if (ecdh != NULL)
 | ||||
| -		{
 | ||||
| -			SSL_CTX_set_options(*ctx, SSL_OP_SINGLE_ECDH_USE);
 | ||||
| -			SSL_CTX_set_tmp_ecdh(*ctx, ecdh);
 | ||||
| -			EC_KEY_free(ecdh);
 | ||||
| -		}
 | ||||
| +		SSL_CTX_set_options(*ctx, SSL_OP_SINGLE_ECDH_USE);
 | ||||
| +		SSL_CTX_set_ecdh_auto(*ctx, 1);
 | ||||
|  #endif /* _FFR_TLS_EC */ | ||||
|   | ||||
|  	} | ||||
| @ -1,182 +0,0 @@ | ||||
| --- sendmail-8.15.2.orig/sendmail/tls.c	2016-12-01 15:20:59.953546417 +0100
 | ||||
| +++ sendmail-8.15.2.orig/sendmail/tls.c	2016-12-01 17:26:43.868521378 +0100
 | ||||
| @@ -63,14 +63,28 @@ static unsigned char dh512_g[] =
 | ||||
|  static DH * | ||||
|  get_dh512() | ||||
|  { | ||||
| -	DH *dh = NULL;
 | ||||
| +	DH *dh;
 | ||||
| +	BIGNUM *p, *g;
 | ||||
|   | ||||
|  	if ((dh = DH_new()) == NULL) | ||||
|  		return NULL; | ||||
| -	dh->p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL);
 | ||||
| -	dh->g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL);
 | ||||
| -	if ((dh->p == NULL) || (dh->g == NULL))
 | ||||
| +	p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL);
 | ||||
| +	g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL);
 | ||||
| +	if (p == NULL || g == NULL)
 | ||||
| +	{
 | ||||
| +		BN_free(p);
 | ||||
| +		BN_free(g);
 | ||||
| +		DH_free(dh);
 | ||||
|  		return NULL; | ||||
| +	}
 | ||||
| +
 | ||||
| +#if OPENSSL_VERSION_NUMBER >= 0x10100005L
 | ||||
| +	DH_set0_pqg(dh, p, NULL, g);
 | ||||
| +#else
 | ||||
| +	dh->p = p;
 | ||||
| +	dh->g = g;
 | ||||
| +#endif
 | ||||
| +
 | ||||
|  	return dh; | ||||
|  } | ||||
|   | ||||
| @@ -117,16 +131,27 @@ get_dh2048()
 | ||||
|  		}; | ||||
|  	static unsigned char dh2048_g[]={ 0x02, }; | ||||
|  	DH *dh; | ||||
| +	BIGNUM *p, *g;
 | ||||
|   | ||||
|  	if ((dh=DH_new()) == NULL) | ||||
|  		return(NULL); | ||||
| -	dh->p=BN_bin2bn(dh2048_p,sizeof(dh2048_p),NULL);
 | ||||
| -	dh->g=BN_bin2bn(dh2048_g,sizeof(dh2048_g),NULL);
 | ||||
| -	if ((dh->p == NULL) || (dh->g == NULL))
 | ||||
| +	p = BN_bin2bn(dh2048_p, sizeof(dh2048_p), NULL);
 | ||||
| +	g = BN_bin2bn(dh2048_g, sizeof(dh2048_g), NULL);
 | ||||
| +	if (p == NULL || g == NULL)
 | ||||
|  	{ | ||||
| +		BN_free(p);
 | ||||
| +		BN_free(g);
 | ||||
|  		DH_free(dh); | ||||
| -		return(NULL);
 | ||||
| +		return NULL;
 | ||||
|  	} | ||||
| +
 | ||||
| +#if OPENSSL_VERSION_NUMBER >= 0x10100005L
 | ||||
| +	DH_set0_pqg(dh, p, NULL, g);
 | ||||
| +#else
 | ||||
| +	dh->p = p;
 | ||||
| +	dh->g = g;
 | ||||
| +#endif
 | ||||
| +
 | ||||
|  	return(dh); | ||||
|  } | ||||
|  # endif /* !NO_DH */ | ||||
| @@ -715,6 +740,54 @@ static char server_session_id_context[]
 | ||||
|  # define SM_SSL_OP_TLS_BLOCK_PADDING_BUG	0 | ||||
|  #endif | ||||
|   | ||||
| +static RSA *
 | ||||
| +generate_rsa_key(bits, e)
 | ||||
| +	int bits;
 | ||||
| +	unsigned long e;
 | ||||
| +{
 | ||||
| +#if OPENSSL_VERSION_NUMBER < 0x00908000L
 | ||||
| +	return RSA_generate_key(bits, e, NULL, NULL);
 | ||||
| +#else
 | ||||
| +	BIGNUM *bne;
 | ||||
| +	RSA *rsa = NULL;
 | ||||
| +
 | ||||
| +	bne = BN_new();
 | ||||
| +	if (bne && BN_set_word(bne, e) != 1)
 | ||||
| +		rsa = RSA_new();
 | ||||
| +	if (rsa && RSA_generate_key_ex(rsa, bits, bne, NULL) != 1)
 | ||||
| +	{
 | ||||
| +		RSA_free(rsa);
 | ||||
| +		rsa = NULL;
 | ||||
| +	}
 | ||||
| +	BN_free(bne);
 | ||||
| +	return rsa;
 | ||||
| +#endif
 | ||||
| +}
 | ||||
| +
 | ||||
| +static DSA *
 | ||||
| +generate_dsa_parameters(bits, seed, seed_len, counter_ret, h_ret)
 | ||||
| +	int bits;
 | ||||
| +	unsigned char *seed;
 | ||||
| +	int seed_len;
 | ||||
| +	int *counter_ret;
 | ||||
| +	unsigned long *h_ret;
 | ||||
| +{
 | ||||
| +#if OPENSSL_VERSION_NUMBER < 0x00908000L
 | ||||
| +	return DSA_generate_parameters(bits, seed, seed_len, counter_ret,
 | ||||
| +			               h_ret, NULL, NULL);
 | ||||
| +#else
 | ||||
| +	DSA *dsa = DSA_new();
 | ||||
| +
 | ||||
| +	if (dsa && DSA_generate_parameters_ex(dsa, bits, seed, seed_len,
 | ||||
| +				              counter_ret, h_ret, NULL) != 1)
 | ||||
| +	{
 | ||||
| +		DSA_free(dsa);
 | ||||
| +		dsa = NULL;
 | ||||
| +	}
 | ||||
| +	return dsa;
 | ||||
| +#endif
 | ||||
| +}
 | ||||
| +
 | ||||
|  bool | ||||
|  inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhparam) | ||||
|  	SSL_CTX **ctx; | ||||
| @@ -926,7 +999,7 @@ inittls(ctx, req, options, srv, certfile
 | ||||
|  	{ | ||||
|  		/* get a pointer to the current certificate validation store */ | ||||
|  		store = SSL_CTX_get_cert_store(*ctx);	/* does not fail */ | ||||
| -		crl_file = BIO_new(BIO_s_file_internal());
 | ||||
| +		crl_file = BIO_new(BIO_s_file());
 | ||||
|  		if (crl_file != NULL) | ||||
|  		{ | ||||
|  			if (BIO_read_filename(crl_file, CRLFile) >= 0) | ||||
| @@ -1003,8 +1076,7 @@ inittls(ctx, req, options, srv, certfile
 | ||||
|  	if (bitset(TLS_I_RSA_TMP, req) | ||||
|  #  if SM_CONF_SHM | ||||
|  	    && ShmId != SM_SHM_NO_ID && | ||||
| -	    (rsa_tmp = RSA_generate_key(RSA_KEYLENGTH, RSA_F4, NULL,
 | ||||
| -					NULL)) == NULL
 | ||||
| +	    (rsa_tmp = generate_rsa_key(RSA_KEYLENGTH, RSA_F4)) == NULL
 | ||||
|  #  else /* SM_CONF_SHM */ | ||||
|  	    && 0	/* no shared memory: no need to generate key now */ | ||||
|  #  endif /* SM_CONF_SHM */ | ||||
| @@ -1210,8 +1282,8 @@ inittls(ctx, req, options, srv, certfile
 | ||||
|  				sm_dprintf("inittls: Generating %d bit DH parameters\n", bits); | ||||
|   | ||||
|  			/* this takes a while! */ | ||||
| -			dsa = DSA_generate_parameters(bits, NULL, 0, NULL,
 | ||||
| -						      NULL, 0, NULL);
 | ||||
| +			dsa = generate_dsa_parameters(bits, NULL, 0, NULL,
 | ||||
| +						      NULL);
 | ||||
|  			dh = DSA_dup_DH(dsa); | ||||
|  			DSA_free(dsa); | ||||
|  		} | ||||
| @@ -1747,7 +1819,7 @@ tmp_rsa_key(s, export, keylength)
 | ||||
|   | ||||
|  	if (rsa_tmp != NULL) | ||||
|  		RSA_free(rsa_tmp); | ||||
| -	rsa_tmp = RSA_generate_key(RSA_KEYLENGTH, RSA_F4, NULL, NULL);
 | ||||
| +	rsa_tmp = generate_rsa_key(RSA_KEYLENGTH, RSA_F4);
 | ||||
|  	if (rsa_tmp == NULL) | ||||
|  	{ | ||||
|  		if (LogLevel > 0) | ||||
| @@ -1974,11 +2046,20 @@ x509_verify_cb(ok, ctx)
 | ||||
|  	{ | ||||
|  		if (LogLevel > 13) | ||||
|  			tls_verify_log(ok, ctx, "x509"); | ||||
| +#if OPENSSL_VERSION_NUMBER >= 0x10100005L
 | ||||
| +		if (X509_STORE_CTX_get_error(ctx) ==
 | ||||
| +		    X509_V_ERR_UNABLE_TO_GET_CRL)
 | ||||
| +		{
 | ||||
| +			X509_STORE_CTX_set_error(ctx, 0);
 | ||||
| +			return 1;	/* override it */
 | ||||
| +		}
 | ||||
| +#else
 | ||||
|  		if (ctx->error == X509_V_ERR_UNABLE_TO_GET_CRL) | ||||
|  		{ | ||||
|  			ctx->error = 0; | ||||
|  			return 1;	/* override it */ | ||||
|  		} | ||||
| +#endif
 | ||||
|  	} | ||||
|  	return ok; | ||||
|  } | ||||
| @ -1,249 +0,0 @@ | ||||
| diff -ru a/sendmail/deliver.c b/sendmail/deliver.c
 | ||||
| --- a/sendmail/deliver.c	2016-02-29 06:01:55.000000000 -0800
 | ||||
| +++ b/sendmail/deliver.c	2016-02-29 06:02:06.000000000 -0800
 | ||||
| @@ -6274,8 +6274,7 @@
 | ||||
|  				tlslogerr(LOG_WARNING, "client"); | ||||
|  		} | ||||
|   | ||||
| -		SSL_free(clt_ssl);
 | ||||
| -		clt_ssl = NULL;
 | ||||
| +		SM_SSL_FREE(clt_ssl);
 | ||||
|  		return EX_SOFTWARE; | ||||
|  	} | ||||
|  	mci->mci_ssl = clt_ssl; | ||||
| @@ -6287,8 +6286,7 @@
 | ||||
|  		return EX_OK; | ||||
|   | ||||
|  	/* failure */ | ||||
| -	SSL_free(clt_ssl);
 | ||||
| -	clt_ssl = NULL;
 | ||||
| +	SM_SSL_FREE(clt_ssl);
 | ||||
|  	return EX_SOFTWARE; | ||||
|  } | ||||
|  /* | ||||
| @@ -6309,7 +6307,7 @@
 | ||||
|   | ||||
|  	if (!bitset(MCIF_TLSACT, mci->mci_flags)) | ||||
|  		return EX_OK; | ||||
| -	r = endtls(mci->mci_ssl, "client");
 | ||||
| +	r = endtls(&mci->mci_ssl, "client");
 | ||||
|  	mci->mci_flags &= ~MCIF_TLSACT; | ||||
|  	return r; | ||||
|  } | ||||
| diff -ru a/sendmail/macro.c b/sendmail/macro.c
 | ||||
| --- a/sendmail/macro.c	2016-02-29 06:01:55.000000000 -0800
 | ||||
| +++ b/sendmail/macro.c	2016-02-29 06:02:06.000000000 -0800
 | ||||
| @@ -362,6 +362,33 @@
 | ||||
|  } | ||||
|   | ||||
|  /* | ||||
| +**  MACTABCLEAR -- clear entire macro table
 | ||||
| +**
 | ||||
| +**	Parameters:
 | ||||
| +**		mac -- Macro table.
 | ||||
| +**
 | ||||
| +**	Returns:
 | ||||
| +**		none.
 | ||||
| +**
 | ||||
| +**	Side Effects:
 | ||||
| +**		clears entire mac structure including rpool pointer!
 | ||||
| +*/
 | ||||
| +
 | ||||
| +void
 | ||||
| +mactabclear(mac)
 | ||||
| +	MACROS_T *mac;
 | ||||
| +{
 | ||||
| +	int i;
 | ||||
| +
 | ||||
| +	if (mac->mac_rpool == NULL)
 | ||||
| +	{
 | ||||
| +		for (i = 0; i < MAXMACROID; i++)
 | ||||
| +	    		SM_FREE_CLR(mac->mac_table[i]);
 | ||||
| +	}
 | ||||
| +	memset((char *) mac, '\0', sizeof(*mac));
 | ||||
| +}
 | ||||
| +
 | ||||
| +/*
 | ||||
|  **  MACDEFINE -- bind a macro name to a value | ||||
|  ** | ||||
|  **	Set a macro to a value, with fancy storage management. | ||||
| diff -ru a/sendmail/mci.c b/sendmail/mci.c
 | ||||
| --- a/sendmail/mci.c	2016-02-29 06:01:55.000000000 -0800
 | ||||
| +++ b/sendmail/mci.c	2016-02-29 06:02:06.000000000 -0800
 | ||||
| @@ -25,6 +25,7 @@
 | ||||
|  						  int, bool)); | ||||
|  static bool	mci_load_persistent __P((MCI *)); | ||||
|  static void	mci_uncache __P((MCI **, bool)); | ||||
| +static void	mci_clear __P((MCI *));
 | ||||
|  static int	mci_lock_host_statfile __P((MCI *)); | ||||
|  static int	mci_read_persistent __P((SM_FILE_T *, MCI *)); | ||||
|   | ||||
| @@ -253,6 +254,7 @@
 | ||||
|  	SM_FREE_CLR(mci->mci_status); | ||||
|  	SM_FREE_CLR(mci->mci_rstatus); | ||||
|  	SM_FREE_CLR(mci->mci_heloname); | ||||
| + 	mci_clear(mci);
 | ||||
|  	if (mci->mci_rpool != NULL) | ||||
|  	{ | ||||
|  		sm_rpool_free(mci->mci_rpool); | ||||
| @@ -315,6 +317,41 @@
 | ||||
|  } | ||||
|   | ||||
|  /* | ||||
| +**  MCI_CLEAR -- clear mci
 | ||||
| +**
 | ||||
| +**	Parameters:
 | ||||
| +**		mci -- the connection to clear.
 | ||||
| +**
 | ||||
| +**	Returns:
 | ||||
| +**		none.
 | ||||
| +*/
 | ||||
| +
 | ||||
| +static void
 | ||||
| +mci_clear(mci)
 | ||||
| +	MCI *mci;
 | ||||
| +{
 | ||||
| +	if (mci == NULL)
 | ||||
| +		return;
 | ||||
| +
 | ||||
| +	mci->mci_maxsize = 0;
 | ||||
| +	mci->mci_min_by = 0;
 | ||||
| +	mci->mci_deliveries = 0;
 | ||||
| +#if SASL
 | ||||
| +	if (bitset(MCIF_AUTHACT, mci->mci_flags))
 | ||||
| +		sasl_dispose(&mci->mci_conn);
 | ||||
| +#endif
 | ||||
| +#if STARTTLS
 | ||||
| +	if (bitset(MCIF_TLSACT, mci->mci_flags) && mci->mci_ssl != NULL)
 | ||||
| +		SM_SSL_FREE(mci->mci_ssl);
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +	/* which flags to preserve? */
 | ||||
| +	mci->mci_flags &= MCIF_CACHED;
 | ||||
| +	mactabclear(&mci->mci_macro);
 | ||||
| +}
 | ||||
| +
 | ||||
| +
 | ||||
| +/*
 | ||||
|  **  MCI_GET -- get information about a particular host | ||||
|  ** | ||||
|  **	Parameters: | ||||
| @@ -419,6 +456,7 @@
 | ||||
|  			mci->mci_errno = 0; | ||||
|  			mci->mci_exitstat = EX_OK; | ||||
|  		} | ||||
| +	 	mci_clear(mci);
 | ||||
|  	} | ||||
|   | ||||
|  	return mci; | ||||
| diff -ru a/sendmail/sendmail.h b/sendmail/sendmail.h
 | ||||
| --- a/sendmail/sendmail.h	2016-02-29 06:01:55.000000000 -0800
 | ||||
| +++ b/sendmail/sendmail.h	2016-02-29 06:02:06.000000000 -0800
 | ||||
| @@ -1186,6 +1186,7 @@
 | ||||
|  #define macid(name)  macid_parse(name, NULL) | ||||
|  extern char	*macname __P((int)); | ||||
|  extern char	*macvalue __P((int, ENVELOPE *)); | ||||
| +extern void	mactabclear __P((MACROS_T *));
 | ||||
|  extern int	rscheck __P((char *, char *, char *, ENVELOPE *, int, int, char *, char *, ADDRESS *, char **)); | ||||
|  extern int	rscap __P((char *, char *, char *, ENVELOPE *, char ***, char *, int)); | ||||
|  extern void	setclass __P((int, char *)); | ||||
| @@ -2002,7 +2003,15 @@
 | ||||
|  extern void	setclttls __P((bool)); | ||||
|  extern bool	initsrvtls __P((bool)); | ||||
|  extern int	tls_get_info __P((SSL *, bool, char *, MACROS_T *, bool)); | ||||
| -extern int	endtls __P((SSL *, char *));
 | ||||
| +#define SM_SSL_FREE(ssl)			\
 | ||||
| +	do {					\
 | ||||
| +		if (ssl != NULL)		\
 | ||||
| +		{				\
 | ||||
| +			SSL_free(ssl);		\
 | ||||
| +			ssl = NULL;		\
 | ||||
| +		}				\
 | ||||
| +	} while (0)
 | ||||
| +extern int	endtls __P((SSL **, char *));
 | ||||
|  extern void	tlslogerr __P((int, const char *)); | ||||
|   | ||||
|   | ||||
| diff -ru a/sendmail/srvrsmtp.c b/sendmail/srvrsmtp.c
 | ||||
| --- a/sendmail/srvrsmtp.c	2016-02-29 06:01:55.000000000 -0800
 | ||||
| +++ b/sendmail/srvrsmtp.c	2016-02-29 06:02:06.000000000 -0800
 | ||||
| @@ -2122,8 +2122,7 @@
 | ||||
|  			if (get_tls_se_options(e, srv_ssl, true) != 0) | ||||
|  			{ | ||||
|  				message("454 4.3.3 TLS not available: error setting options"); | ||||
| -				SSL_free(srv_ssl);
 | ||||
| -				srv_ssl = NULL;
 | ||||
| +				SM_SSL_FREE(srv_ssl);
 | ||||
|  				goto tls_done; | ||||
|  			} | ||||
|   | ||||
| @@ -2145,8 +2144,7 @@
 | ||||
|  			    SSL_set_wfd(srv_ssl, wfd) <= 0) | ||||
|  			{ | ||||
|  				message("454 4.3.3 TLS not available: error set fd"); | ||||
| -				SSL_free(srv_ssl);
 | ||||
| -				srv_ssl = NULL;
 | ||||
| +				SM_SSL_FREE(srv_ssl);
 | ||||
|  				goto tls_done; | ||||
|  			} | ||||
|  			if (!smtps) | ||||
| @@ -2188,8 +2186,7 @@
 | ||||
|  						tlslogerr(LOG_WARNING, "server"); | ||||
|  				} | ||||
|  				tls_ok_srv = false; | ||||
| -				SSL_free(srv_ssl);
 | ||||
| -				srv_ssl = NULL;
 | ||||
| +				SM_SSL_FREE(srv_ssl);
 | ||||
|   | ||||
|  				/* | ||||
|  				**  according to the next draft of | ||||
| @@ -3416,7 +3413,7 @@
 | ||||
|  			/* shutdown TLS connection */ | ||||
|  			if (tls_active) | ||||
|  			{ | ||||
| -				(void) endtls(srv_ssl, "server");
 | ||||
| +				(void) endtls(&srv_ssl, "server");
 | ||||
|  				tls_active = false; | ||||
|  			} | ||||
|  #endif /* STARTTLS */ | ||||
| diff -ru a/sendmail/tls.c b/sendmail/tls.c
 | ||||
| --- a/sendmail/tls.c	2016-02-29 06:01:55.000000000 -0800
 | ||||
| +++ b/sendmail/tls.c	2016-02-29 06:02:06.000000000 -0800
 | ||||
| @@ -1624,7 +1624,7 @@
 | ||||
|  **  ENDTLS -- shutdown secure connection | ||||
|  ** | ||||
|  **	Parameters: | ||||
| -**		ssl -- SSL connection information.
 | ||||
| +**		pssl -- pointer to TLS session context
 | ||||
|  **		side -- server/client (for logging). | ||||
|  ** | ||||
|  **	Returns: | ||||
| @@ -1632,12 +1632,16 @@
 | ||||
|  */ | ||||
|   | ||||
|  int | ||||
| -endtls(ssl, side)
 | ||||
| -	SSL *ssl;
 | ||||
| +endtls(pssl, side)
 | ||||
| +	SSL **pssl;
 | ||||
|  	char *side; | ||||
|  { | ||||
|  	int ret = EX_OK; | ||||
| +	SSL *ssl;
 | ||||
|   | ||||
| +	SM_REQUIRE(pssl != NULL);
 | ||||
| + 	ret = EX_OK;
 | ||||
| +	ssl = *pssl;
 | ||||
|  	if (ssl != NULL) | ||||
|  	{ | ||||
|  		int r; | ||||
| @@ -1703,8 +1707,7 @@
 | ||||
|  			ret = EX_SOFTWARE; | ||||
|  		} | ||||
|  # endif /* !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER > 0x0090602fL */ | ||||
| -		SSL_free(ssl);
 | ||||
| -		ssl = NULL;
 | ||||
| +		SM_SSL_FREE(*pssl);
 | ||||
|  	} | ||||
|  	return ret; | ||||
|  } | ||||
| @ -1,204 +0,0 @@ | ||||
| commit 72c678024d5f7b97bae8c20cc3fb2e0299778d5b | ||||
| Author: Tomas Korbar <tkorbar@redhat.com> | ||||
| Date:   Mon Sep 7 12:41:05 2020 +0200 | ||||
| 
 | ||||
|     Backport confTLS_FALLBACK_TO_CLEAR Configuration option | ||||
| 
 | ||||
| diff --git a/cf/README b/cf/README
 | ||||
| index 91e69a9..e8941ad 100644
 | ||||
| --- a/cf/README
 | ||||
| +++ b/cf/README
 | ||||
| @@ -4011,6 +4011,10 @@ confUSERDB_SPEC		UserDatabaseSpec
 | ||||
|  confFALLBACK_MX		FallbackMXhost	[undefined] Fallback MX host. | ||||
|  confFALLBACK_SMARTHOST	FallbackSmartHost | ||||
|  					[undefined] Fallback smart host. | ||||
| +confTLS_FALLBACK_TO_CLEAR	TLSFallbacktoClear
 | ||||
| +					[undefined] If set, immediately try
 | ||||
| +					a connection again without STARTTLS
 | ||||
| +					after a TLS handshake failure.
 | ||||
|  confTRY_NULL_MX_LIST	TryNullMXList	[False] If this host is the best MX | ||||
|  					for a host and other arrangements | ||||
|  					haven't been made, try connecting | ||||
| diff --git a/cf/m4/proto.m4 b/cf/m4/proto.m4
 | ||||
| index 0df3416..a741d97 100644
 | ||||
| --- a/cf/m4/proto.m4
 | ||||
| +++ b/cf/m4/proto.m4
 | ||||
| @@ -656,6 +656,8 @@ _OPTION(CipherList, `confCIPHER_LIST', `')
 | ||||
|  _OPTION(ServerSSLOptions, `confSERVER_SSL_OPTIONS', `') | ||||
|  # client side SSL options | ||||
|  _OPTION(ClientSSLOptions, `confCLIENT_SSL_OPTIONS', `') | ||||
| +# TLS: fall back to clear text after handshake failure?
 | ||||
| +_OPTION(TLSFallbacktoClear, `confTLS_FALLBACK_TO_CLEAR', `')
 | ||||
|   | ||||
|  # Input mail filters | ||||
|  _OPTION(InputMailFilters, `confINPUT_MAIL_FILTERS', `') | ||||
| @@ -2856,6 +2858,7 @@ R<$-:$+><VERIFY $*> <$*> FAIL	$#error $@ $2 $: $1 " authentication failed"
 | ||||
|  R<$-:$+><VERIFY $*> <$*> NO	$#error $@ $2 $: $1 " not authenticated" | ||||
|  R<$-:$+><VERIFY $*> <$*> NOT	$#error $@ $2 $: $1 " no authentication requested" | ||||
|  R<$-:$+><VERIFY $*> <$*> NONE	$#error $@ $2 $: $1 " other side does not support STARTTLS" | ||||
| +R<$-:$+><VERIFY $*> <$*> CLEAR	$#error $@ $2 $: $1 " STARTTLS disabled locally"
 | ||||
|  dnl some other value for ${verify} | ||||
|  R<$-:$+><VERIFY $*> <$*> $+	$#error $@ $2 $: $1 " authentication failure " $4 | ||||
|  dnl some level of encryption required: get the maximum level (case 2.) | ||||
| diff --git a/doc/op/op.me b/doc/op/op.me
 | ||||
| index 57e25cd..97d3b9c 100644
 | ||||
| --- a/doc/op/op.me
 | ||||
| +++ b/doc/op/op.me
 | ||||
| @@ -8340,6 +8340,22 @@ PostMilter is useful only when
 | ||||
|  .i sendmail | ||||
|  is running as an SMTP server; in all other situations it | ||||
|  acts the same as True. | ||||
| +.ip TLSFallbacktoClear
 | ||||
| +[no short name]
 | ||||
| +If set,
 | ||||
| +.i sendmail
 | ||||
| +immediately tries an outbound connection again without STARTTLS
 | ||||
| +after a TLS handshake failure.
 | ||||
| +Note:
 | ||||
| +this applies to all connections even if TLS specific requirements are set
 | ||||
| +(see rulesets
 | ||||
| +.i tls_rcpt
 | ||||
| +and
 | ||||
| +.i tls_client
 | ||||
| +).
 | ||||
| +Hence such requirements will cause an error on a retry without STARTTLS.
 | ||||
| +Therefore they should only trigger a temporary failure so the connection
 | ||||
| +is later on tried again.
 | ||||
|  .ip TLSSrvOptions | ||||
|  [no short name] | ||||
|  List of options for SMTP STARTTLS for the server | ||||
| diff --git a/sendmail/deliver.c b/sendmail/deliver.c
 | ||||
| index 8027a50..af42e8f 100644
 | ||||
| --- a/sendmail/deliver.c
 | ||||
| +++ b/sendmail/deliver.c
 | ||||
| @@ -1334,6 +1334,10 @@ deliver(e, firstto)
 | ||||
|  	char *pv[MAXPV + 1]; | ||||
|  	char buf[MAXNAME + 1]; | ||||
|  	char cbuf[MAXPATHLEN]; | ||||
| +#if STARTTLS
 | ||||
| +	/* 0: try TLS, 1: try without TLS again, >1: don't try again */
 | ||||
| +	int tlsstate;
 | ||||
| +#endif
 | ||||
|   | ||||
|  	errno = 0; | ||||
|  	SM_REQUIRE(firstto != NULL);	/* same as to */ | ||||
| @@ -1349,7 +1353,9 @@ deliver(e, firstto)
 | ||||
|  	e->e_statmsg = NULL; | ||||
|  	SmtpError[0] = '\0'; | ||||
|  	xstart = curtime(); | ||||
| -
 | ||||
| +#if STARTTLS
 | ||||
| +	tlsstate = 0;
 | ||||
| +#endif
 | ||||
|  	if (tTd(10, 1)) | ||||
|  		sm_dprintf("\n--deliver, id=%s, mailer=%s, host=`%s', first user=`%s'\n", | ||||
|  			e->e_id, m->m_name, host, to->q_user); | ||||
| @@ -2073,6 +2079,9 @@ tryhost:
 | ||||
|  			hostnum++; | ||||
|  			if (endp != NULL) | ||||
|  				*endp = sep; | ||||
| +#if STARTTLS
 | ||||
| +			tlsstate = 0;
 | ||||
| +#endif
 | ||||
|   | ||||
|    one_last_try: | ||||
|  			/* see if we already know that this host is fried */ | ||||
| @@ -2960,6 +2969,8 @@ reconnect:	/* after switching to an encrypted connection */
 | ||||
|  			usetls = bitset(MCIF_TLS, mci->mci_flags); | ||||
|  			if (usetls) | ||||
|  				usetls = !iscltflgset(e, D_NOTLS); | ||||
| +			if (usetls)
 | ||||
| +				usetls = tlsstate == 0;
 | ||||
|   | ||||
|  			host = macvalue(macid("{server_name}"), e); | ||||
|  			if (usetls) | ||||
| @@ -3025,8 +3036,11 @@ reconnect:	/* after switching to an encrypted connection */
 | ||||
|  				} | ||||
|  			} | ||||
|  			else | ||||
| +			{
 | ||||
| +				p = tlsstate == 0 ? "NONE": "CLEAR";
 | ||||
|  				macdefine(&e->e_macro, A_PERM, | ||||
| -					  macid("{verify}"), "NONE");
 | ||||
| +					  macid("{verify}"), p);
 | ||||
| +			}
 | ||||
|  			olderrors = Errors; | ||||
|  			QuickAbort = false; | ||||
|  			SuprErrs = true; | ||||
| @@ -3077,6 +3091,10 @@ reconnect:	/* after switching to an encrypted connection */
 | ||||
|  					} | ||||
|  					mci->mci_flags &= ~MCIF_TLSACT; | ||||
|  					(void) endmailer(mci, e, pv); | ||||
| +					if (TLSFallbacktoClear)
 | ||||
| +					{
 | ||||
| +						++tlsstate;
 | ||||
| +					}
 | ||||
|  				} | ||||
|  				else | ||||
|  				{ | ||||
| @@ -3119,6 +3137,27 @@ reconnect:	/* after switching to an encrypted connection */
 | ||||
|  				mci_clr_extensions(mci); | ||||
|  				goto reconnect; | ||||
|  			} | ||||
| +			if (tlsstate == 1)
 | ||||
| +			{
 | ||||
| +				if (tTd(11, 1))
 | ||||
| +				{
 | ||||
| +					sm_syslog(LOG_DEBUG, NOQID,
 | ||||
| +						"STARTTLS=client, relay=%.100s, tlsstate=%d, status=trying_again",
 | ||||
| +						mci->mci_host, tlsstate);
 | ||||
| +					mci_dump(NULL, mci, true);
 | ||||
| +				}
 | ||||
| +				++tlsstate;
 | ||||
| +				/*
 | ||||
| +				**  Fake the status so a new connection is
 | ||||
| +				**  tried, otherwise the TLS error will
 | ||||
| +				**  "persist" during this delivery attempt.
 | ||||
| +				*/
 | ||||
| +
 | ||||
| +				mci->mci_errno = 0;
 | ||||
| +				rcode = EX_OK;
 | ||||
| +				mci_setstat(mci, rcode, NULL, NULL);
 | ||||
| +				goto one_last_try;
 | ||||
| +			}
 | ||||
|  		} | ||||
|  # endif /* STARTTLS */ | ||||
|  # if SASL | ||||
| diff --git a/sendmail/readcf.c b/sendmail/readcf.c
 | ||||
| index 86892f5..82660f4 100644
 | ||||
| --- a/sendmail/readcf.c
 | ||||
| +++ b/sendmail/readcf.c
 | ||||
| @@ -2911,7 +2911,10 @@ static struct optioninfo
 | ||||
|  #endif | ||||
|  #define O_USECOMPRESSEDIPV6ADDRESSES 0xec | ||||
|  	{ "UseCompressedIPv6Addresses",	O_USECOMPRESSEDIPV6ADDRESSES, OI_NONE }, | ||||
| -
 | ||||
| +#if STARTTLS
 | ||||
| +# define O_TLSFB2CLEAR		0xef
 | ||||
| +	{ "TLSFallbacktoClear",	O_TLSFB2CLEAR,	OI_NONE	},
 | ||||
| +#endif
 | ||||
|  	{ NULL,				'\0',		OI_NONE	} | ||||
|  }; | ||||
|   | ||||
| @@ -4305,6 +4308,9 @@ setoption(opt, val, safe, sticky, e)
 | ||||
|  #endif /* SASL */ | ||||
|   | ||||
|  #if STARTTLS | ||||
| +	  case O_TLSFB2CLEAR:
 | ||||
| +		TLSFallbacktoClear = atobool(val);
 | ||||
| +		break;
 | ||||
|  	  case O_SRVCERTFILE: | ||||
|  		SET_STRING_EXP(SrvCertFile); | ||||
|  	  case O_SRVKEYFILE: | ||||
| diff --git a/sendmail/sendmail.h b/sendmail/sendmail.h
 | ||||
| index 441399c..9be1e76 100644
 | ||||
| --- a/sendmail/sendmail.h
 | ||||
| +++ b/sendmail/sendmail.h
 | ||||
| @@ -2032,6 +2032,7 @@ EXTERN char	*CRLPath;	/* path to CRLs (dir. with hashes) */
 | ||||
|  #endif /* _FFR_CRLPATH */ | ||||
|  EXTERN unsigned long	TLS_Srv_Opts;	/* TLS server options */ | ||||
|  EXTERN unsigned long	Srv_SSL_Options, Clt_SSL_Options; /* SSL options */ | ||||
| +EXTERN bool	TLSFallbacktoClear;
 | ||||
|  #endif /* STARTTLS */ | ||||
|   | ||||
|  /* | ||||
| @ -1,149 +0,0 @@ | ||||
| diff --git a/include/sm/varargs.h b/include/sm/varargs.h
 | ||||
| index 612858d..2609630 100644
 | ||||
| --- a/include/sm/varargs.h
 | ||||
| +++ b/include/sm/varargs.h
 | ||||
| @@ -32,6 +32,11 @@
 | ||||
|  #  define SM_VA_COPY(dst, src)	__va_copy((dst), (src)) | ||||
|  # else | ||||
|  #  define SM_VA_COPY(dst, src)	memcpy(&(dst), &(src), sizeof((dst))) | ||||
| +#  define SM_VA_END_COPY(ap)	do { } while (0)
 | ||||
| +# endif
 | ||||
| +
 | ||||
| +# ifndef SM_VA_END_COPY
 | ||||
| +#  define SM_VA_END_COPY(ap)	va_end(ap)
 | ||||
|  # endif | ||||
|   | ||||
|  /* | ||||
| diff --git a/libsm/vfprintf.c b/libsm/vfprintf.c
 | ||||
| index 87c353c..c99d4e5 100644
 | ||||
| --- a/libsm/vfprintf.c
 | ||||
| +++ b/libsm/vfprintf.c
 | ||||
| @@ -782,6 +782,7 @@ number:			if ((dprec = prec) >= 0)
 | ||||
|  done: | ||||
|  	FLUSH(); | ||||
|  error: | ||||
| +	SM_VA_END_COPY(orgap);
 | ||||
|  	if ((argtable != NULL) && (argtable != statargtable)) | ||||
|  		sm_free(argtable); | ||||
|  	return sm_error(fp) ? SM_IO_EOF : ret; | ||||
| diff --git a/sendmail/milter.c b/sendmail/milter.c
 | ||||
| index 462efd2..af6dc66 100644
 | ||||
| --- a/sendmail/milter.c
 | ||||
| +++ b/sendmail/milter.c
 | ||||
| @@ -2437,8 +2437,7 @@ milter_negotiate(m, e, milters)
 | ||||
|  			sm_syslog(LOG_ERR, e->e_id, | ||||
|  				  "Milter (%s): negotiate: returned %c instead of %c", | ||||
|  				  m->mf_name, rcmd, SMFIC_OPTNEG); | ||||
| -		if (response != NULL)
 | ||||
| -			sm_free(response); /* XXX */
 | ||||
| +		SM_FREE(response);
 | ||||
|  		milter_error(m, e); | ||||
|  		return -1; | ||||
|  	} | ||||
| @@ -2453,8 +2452,7 @@ milter_negotiate(m, e, milters)
 | ||||
|  			sm_syslog(LOG_ERR, e->e_id, | ||||
|  				  "Milter (%s): negotiate: did not return valid info", | ||||
|  				  m->mf_name); | ||||
| -		if (response != NULL)
 | ||||
| -			sm_free(response); /* XXX */
 | ||||
| +		SM_FREE(response);
 | ||||
|  		milter_error(m, e); | ||||
|  		return -1; | ||||
|  	} | ||||
| @@ -2472,8 +2470,7 @@ milter_negotiate(m, e, milters)
 | ||||
|  			sm_syslog(LOG_ERR, e->e_id, | ||||
|  				  "Milter (%s): negotiate: did not return enough info", | ||||
|  				  m->mf_name); | ||||
| -		if (response != NULL)
 | ||||
| -			sm_free(response); /* XXX */
 | ||||
| +		SM_FREE(response);
 | ||||
|  		milter_error(m, e); | ||||
|  		return -1; | ||||
|  	} | ||||
| @@ -2589,11 +2586,11 @@ milter_negotiate(m, e, milters)
 | ||||
|  	if (tTd(64, 5)) | ||||
|  		sm_dprintf("milter_negotiate(%s): received: version %u, fflags 0x%x, pflags 0x%x\n", | ||||
|  			m->mf_name, m->mf_fvers, m->mf_fflags, m->mf_pflags); | ||||
| +	SM_FREE(response);
 | ||||
|  	return 0; | ||||
|   | ||||
|    error: | ||||
| -	if (response != NULL)
 | ||||
| -		sm_free(response); /* XXX */
 | ||||
| +	SM_FREE(response);
 | ||||
|  	return -1; | ||||
|  } | ||||
|   | ||||
| @@ -3230,6 +3227,7 @@ milter_changeheader(m, response, rlen, e)
 | ||||
|  			addheader(newstr(field), mh_value, H_USER, e, | ||||
|  				!bitset(SMFIP_HDR_LEADSPC, m->mf_pflags)); | ||||
|  		} | ||||
| +		SM_FREE(mh_value);
 | ||||
|  		return; | ||||
|  	} | ||||
|   | ||||
| @@ -3438,6 +3436,8 @@ milter_chgfrom(response, rlen, e)
 | ||||
|  	{ | ||||
|  		if (tTd(64, 10)) | ||||
|  			sm_dprintf("didn't follow protocol argc=%d\n", argc); | ||||
| +		if (argv != NULL)
 | ||||
| +			free(argv);
 | ||||
|  		return; | ||||
|  	} | ||||
|   | ||||
| @@ -3456,6 +3456,7 @@ milter_chgfrom(response, rlen, e)
 | ||||
|  				mail_esmtp_args); | ||||
|  	} | ||||
|  	Errors = olderrors; | ||||
| +	free(argv);
 | ||||
|  	return; | ||||
|  } | ||||
|   | ||||
| @@ -3503,6 +3504,8 @@ milter_addrcpt_par(response, rlen, e)
 | ||||
|  	{ | ||||
|  		if (tTd(64, 10)) | ||||
|  			sm_dprintf("didn't follow protocol argc=%d\n", argc); | ||||
| +		if (argv != NULL)
 | ||||
| +			free(argv);
 | ||||
|  		return; | ||||
|  	} | ||||
|  	olderrors = Errors; | ||||
| @@ -3527,6 +3530,7 @@ milter_addrcpt_par(response, rlen, e)
 | ||||
|  	} | ||||
|   | ||||
|  	Errors = olderrors; | ||||
| +	free(argv);
 | ||||
|  	return; | ||||
|  } | ||||
|   | ||||
| diff --git a/sendmail/queue.c b/sendmail/queue.c
 | ||||
| index 503f296..c9153c8 100644
 | ||||
| --- a/sendmail/queue.c
 | ||||
| +++ b/sendmail/queue.c
 | ||||
| @@ -8590,6 +8590,7 @@ split_by_recipient(e)
 | ||||
|  		if (split_within_queue(ee) == SM_SPLIT_FAIL) | ||||
|  		{ | ||||
|  			e->e_sibling = firstsibling; | ||||
| +			SM_FREE(lsplits);
 | ||||
|  			return false; | ||||
|  		} | ||||
|  		ee->e_flags |= EF_SPLIT; | ||||
| @@ -8604,8 +8605,7 @@ split_by_recipient(e)
 | ||||
|  				if (p == NULL) | ||||
|  				{ | ||||
|  					/* let's try to get this done */ | ||||
| -					sm_free(lsplits);
 | ||||
| -					lsplits = NULL;
 | ||||
| +					SM_FREE(lsplits);
 | ||||
|  				} | ||||
|  				else | ||||
|  					lsplits = p; | ||||
| @@ -8627,7 +8627,7 @@ split_by_recipient(e)
 | ||||
|  	{ | ||||
|  		sm_syslog(LOG_NOTICE, e->e_id, "split: count=%d, id%s=%s", | ||||
|  			  n - 1, n > 2 ? "s" : "", lsplits); | ||||
| -		sm_free(lsplits);
 | ||||
| +		SM_FREE(lsplits);
 | ||||
|  	} | ||||
|  	split = split_within_queue(e) != SM_SPLIT_FAIL; | ||||
|  	if (split) | ||||
| @ -1,8 +1,8 @@ | ||||
| diff --git a/cf/m4/cfhead.m4 b/cf/m4/cfhead.m4
 | ||||
| index 714a3ec..3fd6c1c 100644
 | ||||
| index 6d12e85..15af608 100644
 | ||||
| --- a/cf/m4/cfhead.m4
 | ||||
| +++ b/cf/m4/cfhead.m4
 | ||||
| @@ -260,7 +260,7 @@ ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
 | ||||
| @@ -269,7 +269,7 @@ ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
 | ||||
|  define(`DATABASE_MAP_TYPE', `hash') | ||||
|   | ||||
|  # set up default values for options | ||||
| @ -12,10 +12,10 @@ index 714a3ec..3fd6c1c 100644 | ||||
|  define(`confFROM_LINE', `From $g $d') | ||||
|  define(`confOPERATORS', `.:%@!^/[]+') | ||||
| diff --git a/sendmail/aliases.0 b/sendmail/aliases.0
 | ||||
| index cfdbe17..5ea4c28 100644
 | ||||
| index ba855d4..edb3b19 100644
 | ||||
| --- a/sendmail/aliases.0
 | ||||
| +++ b/sendmail/aliases.0
 | ||||
| @@ -63,7 +63,7 @@ DDEESSCCRRIIPPTTIIOONN
 | ||||
| @@ -63,7 +63,7 @@ ALIASES(5)                                                          ALIASES(5)
 | ||||
|         the list of users defined in that file. | ||||
|   | ||||
|         This  is  only  the  raw  data file; the actual aliasing information is | ||||
| @ -47,26 +47,26 @@ index f09b49c..7b16db2 100644 | ||||
|  newaliases(1).   | ||||
|  A  | ||||
| diff --git a/sendmail/newaliases.0 b/sendmail/newaliases.0
 | ||||
| index c77f401..e2a1670 100644
 | ||||
| index 49ff2b0..247a276 100644
 | ||||
| --- a/sendmail/newaliases.0
 | ||||
| +++ b/sendmail/newaliases.0
 | ||||
| @@ -10,7 +10,7 @@ SSYYNNOOPPSSIISS
 | ||||
| @@ -10,7 +10,7 @@ NEWALIASES(1)                                                    NEWALIASES(1)
 | ||||
|   | ||||
|  DDEESSCCRRIIPPTTIIOONN | ||||
|         NNeewwaalliiaasseess  rebuilds  the  random access data base for the mail aliases | ||||
|  [1mDESCRIPTION[0m | ||||
|         [1mNewaliases  [22mrebuilds  the  random access data base for the mail aliases | ||||
| -       file /etc/mail/aliases.  It must be run each time this file is  changed
 | ||||
| +       file /etc/aliases.  It must be run each time this file is  changed
 | ||||
|         in order for the change to take effect. | ||||
|   | ||||
|         NNeewwaalliiaasseess is identical to ``sendmail -bi''. | ||||
| @@ -22,7 +22,7 @@ DDEESSCCRRIIPPTTIIOONN
 | ||||
|         sseennddmmaaiill.. | ||||
|         [1mNewaliases [22mis identical to ``sendmail -bi''. | ||||
| @@ -22,7 +22,7 @@ NEWALIASES(1)                                                    NEWALIASES(1)
 | ||||
|         [1msendmail.[0m | ||||
|   | ||||
|  FFIILLEESS | ||||
|  [1mFILES[0m | ||||
| -       /etc/mail/aliases   The mail aliases file
 | ||||
| +       /etc/aliases   The mail aliases file
 | ||||
|   | ||||
|  SSEEEE AALLSSOO | ||||
|  [1mSEE ALSO[0m | ||||
|         aliases(5), sendmail(8) | ||||
| diff --git a/sendmail/newaliases.1 b/sendmail/newaliases.1
 | ||||
| index 59dc0de..9ba8752 100644
 | ||||
| @ -91,10 +91,10 @@ index 59dc0de..9ba8752 100644 | ||||
|  .SH SEE ALSO | ||||
|  aliases(5), sendmail(8) | ||||
| diff --git a/sendmail/sendmail.0 b/sendmail/sendmail.0
 | ||||
| index 515d5f7..8236411 100644
 | ||||
| index 60ab1cd..5f3bf93 100644
 | ||||
| --- a/sendmail/sendmail.0
 | ||||
| +++ b/sendmail/sendmail.0
 | ||||
| @@ -434,10 +434,10 @@ FFIILLEESS
 | ||||
| @@ -434,10 +434,10 @@ SENDMAIL(8)                                                        SENDMAIL(8)
 | ||||
|         are only approximations. | ||||
|   | ||||
|   | ||||
| @ -39,8 +39,8 @@ | ||||
|  define(`confREQUIRE_SM_OS_H', `true') | ||||
|  PREPENDDEF(`confENVDEF', `confMAPDEF') | ||||
|  bldPRODUCT_START(`library', `libsm') | ||||
| -define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c ')
 | ||||
| +define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c ')
 | ||||
| -define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c notify.c ')
 | ||||
| +define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c notify.c ')
 | ||||
|  bldPRODUCT_END | ||||
|  dnl msg.c | ||||
|  dnl syslogio.c | ||||
| @ -1,10 +1,8 @@ | ||||
| Description: systemd-like socket activation support for libmilter | ||||
| Author: Mikhail Gusarov <dottedmag@debian.org | ||||
| diff --git a/libmilter/docs/smfi_setconn.html b/libmilter/docs/smfi_setconn.html
 | ||||
| index eba7c5b..5b272a0 100644
 | ||||
| index 8897f5a..0e04120 100644
 | ||||
| --- a/libmilter/docs/smfi_setconn.html
 | ||||
| +++ b/libmilter/docs/smfi_setconn.html
 | ||||
| @@ -43,6 +43,7 @@ Set the socket through which this filter should communicate with sendmail.
 | ||||
| @@ -44,6 +44,7 @@ Set the socket through which this filter should communicate with sendmail.
 | ||||
|  	<LI><CODE>{unix|local}:/path/to/file</CODE> -- A named pipe. | ||||
|  	<LI><CODE>inet:port@{hostname|ip-address}</CODE> -- An IPV4 socket. | ||||
|  	<LI><CODE>inet6:port@{hostname|ip-address}</CODE> -- An IPV6 socket. | ||||
| @ -13,7 +11,7 @@ index eba7c5b..5b272a0 100644 | ||||
|  	</TD></TR> | ||||
|      </TABLE> | ||||
| diff --git a/libmilter/listener.c b/libmilter/listener.c
 | ||||
| index 11d92bb..2ab533d 100644
 | ||||
| index 0468a62..72e7a4f 100644
 | ||||
| --- a/libmilter/listener.c
 | ||||
| +++ b/libmilter/listener.c
 | ||||
| @@ -197,6 +197,11 @@ mi_milteropen(conn, backlog, rmsocket, name)
 | ||||
| @ -54,7 +52,7 @@ index 11d92bb..2ab533d 100644 | ||||
| @@ -466,6 +485,7 @@ mi_milteropen(conn, backlog, rmsocket, name)
 | ||||
|  #if NETUNIX | ||||
|  	    addr.sa.sa_family != AF_UNIX && | ||||
|  #endif /* NETUNIX */ | ||||
|  #endif | ||||
| +	    addr.sa.sa_family != AF_UNSPEC &&
 | ||||
|  	    setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &sockopt, | ||||
|  		       sizeof(sockopt)) == -1) | ||||
| @ -72,7 +70,7 @@ index 11d92bb..2ab533d 100644 | ||||
| @@ -818,7 +839,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog)
 | ||||
|  # ifdef BSD4_4_SOCKADDR | ||||
|  		     cliaddr.sa.sa_len == 0 || | ||||
|  # endif /* BSD4_4_SOCKADDR */ | ||||
|  # endif | ||||
| -		     cliaddr.sa.sa_family != L_family))
 | ||||
| +		     (L_family != AF_UNSPEC && cliaddr.sa.sa_family != L_family)))
 | ||||
|  		{ | ||||
| @ -1,8 +1,8 @@ | ||||
| diff --git a/cf/m4/proto.m4 b/cf/m4/proto.m4
 | ||||
| index 696bf36..5a5963b 100644
 | ||||
| index 618dde0..8c460ce 100644
 | ||||
| --- a/cf/m4/proto.m4
 | ||||
| +++ b/cf/m4/proto.m4
 | ||||
| @@ -1898,6 +1898,8 @@ R<@> < $* @ [IPv6:::1] >
 | ||||
| @@ -1910,6 +1910,8 @@ R<@> < $* @ [IPv6:::1] >
 | ||||
|  			$: < ? $&{client_name} > < $1 @ [IPv6:::1] > | ||||
|  R<@> < $* @ localhost.$m > | ||||
|  			$: < ? $&{client_name} > < $1 @ localhost.$m > | ||||
							
								
								
									
										19
									
								
								SOURCES/sendmail-8.16.1-openssl-3.0-fix.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								SOURCES/sendmail-8.16.1-openssl-3.0-fix.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| diff --git a/sendmail/tls.c b/sendmail/tls.c
 | ||||
| index 696d32f..b8527c4 100644
 | ||||
| --- a/sendmail/tls.c
 | ||||
| +++ b/sendmail/tls.c
 | ||||
| @@ -29,7 +29,13 @@ SM_RCSID("@(#)$Id: tls.c,v 8.127 2013-11-27 02:51:11 gshapiro Exp $")
 | ||||
|  # ERROR: OpenSSL version OPENSSL_VERSION_NUMBER is unsupported. | ||||
|  # endif | ||||
|   | ||||
| -# if OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_VERSION_NUMBER < 0x20000000L
 | ||||
| +/*
 | ||||
| + **  *SSL version numbers:
 | ||||
| + **  OpenSSL 0.9 - 1.1 (so far), 3.0 (in alpha)
 | ||||
| + **  LibreSSL 2.0 (0x20000000L - part of "These will never change")
 | ||||
| + */
 | ||||
| +
 | ||||
| +# if (OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_VERSION_NUMBER < 0x20000000L) || OPENSSL_VERSION_NUMBER >= 0x30000000L
 | ||||
|  #  define MTA_HAVE_DH_set0_pqg 1 | ||||
|  #  define MTA_HAVE_DSA_GENERATE_EX	1 | ||||
|   | ||||
| @ -12,10 +12,10 @@ index b9dfb16..cb325cc 100644 | ||||
|  dnl define(`confDIRECT_SUBMISSION_MODIFIERS',`C')dnl | ||||
|  FEATURE(`use_ct_file')dnl | ||||
| diff --git a/cf/m4/proto.m4 b/cf/m4/proto.m4
 | ||||
| index 5a5963b..0df3416 100644
 | ||||
| index 8c460ce..a68ab8d 100644
 | ||||
| --- a/cf/m4/proto.m4
 | ||||
| +++ b/cf/m4/proto.m4
 | ||||
| @@ -251,6 +251,9 @@ _OPTION(SevenBitInput, `confSEVEN_BIT_INPUT', `False')
 | ||||
| @@ -253,6 +253,9 @@ _OPTION(SevenBitInput, `confSEVEN_BIT_INPUT', `False')
 | ||||
|  # 8-bit data handling | ||||
|  _OPTION(EightBitMode, `confEIGHT_BIT_HANDLING', `pass8') | ||||
|   | ||||
| @ -26,11 +26,11 @@ index 5a5963b..0df3416 100644 | ||||
|  _OPTION(AliasWait, `confALIAS_WAIT', `5m') | ||||
|   | ||||
| diff --git a/sendmail/conf.c b/sendmail/conf.c
 | ||||
| index cbb9c76..1b55533 100644
 | ||||
| index e9fa42c..fa64b11 100644
 | ||||
| --- a/sendmail/conf.c
 | ||||
| +++ b/sendmail/conf.c
 | ||||
| @@ -6430,6 +6430,10 @@ char	*FFRCompileOptions[] =
 | ||||
|  #if _FFR_QF_PARANOIA | ||||
| @@ -6614,6 +6614,10 @@ char	*FFRCompileOptions[] =
 | ||||
|  	/* Check to make sure key fields were read from qf */ | ||||
|  	"_FFR_QF_PARANOIA", | ||||
|  #endif | ||||
| +#if _FFR_QOS && defined(SOL_IP) && defined(IP_TOS)
 | ||||
| @ -41,10 +41,10 @@ index cbb9c76..1b55533 100644 | ||||
|  	/* Allow QueueSortOrder per queue group. */ | ||||
|  /* XXX: Still need to actually use qgrp->qg_sortorder */ | ||||
| diff --git a/sendmail/daemon.c b/sendmail/daemon.c
 | ||||
| index 4288365..86fe319 100644
 | ||||
| index 19a9378..5561cf5 100644
 | ||||
| --- a/sendmail/daemon.c
 | ||||
| +++ b/sendmail/daemon.c
 | ||||
| @@ -104,6 +104,10 @@ static int	NDaemons = 0;			/* actual number of daemons */
 | ||||
| @@ -124,6 +124,10 @@ static int	NDaemons = 0;			/* actual number of daemons */
 | ||||
|   | ||||
|  static time_t	NextDiskSpaceCheck = 0; | ||||
|   | ||||
| @ -55,7 +55,7 @@ index 4288365..86fe319 100644 | ||||
|  /* | ||||
|  **  GETREQUESTS -- open mail IPC port and get requests. | ||||
|  ** | ||||
| @@ -1139,6 +1143,16 @@ opendaemonsocket(d, firsttime)
 | ||||
| @@ -1159,6 +1163,16 @@ opendaemonsocket(d, firsttime)
 | ||||
|  			(void) setsockopt(d->d_socket, SOL_SOCKET, | ||||
|  					  SO_KEEPALIVE, (char *)&on, sizeof(on)); | ||||
|   | ||||
| @ -72,7 +72,7 @@ index 4288365..86fe319 100644 | ||||
|  #ifdef SO_RCVBUF | ||||
|  			if (d->d_tcprcvbufsize > 0) | ||||
|  			{ | ||||
| @@ -2571,6 +2585,16 @@ gothostent:
 | ||||
| @@ -2688,6 +2702,16 @@ gothostent:
 | ||||
|  			return EX_TEMPFAIL; | ||||
|  		} | ||||
|   | ||||
| @ -90,21 +90,21 @@ index 4288365..86fe319 100644 | ||||
|  		if (ClientSettings[family].d_tcpsndbufsize > 0) | ||||
|  		{ | ||||
| diff --git a/sendmail/readcf.c b/sendmail/readcf.c
 | ||||
| index 2b0fbf7..86892f5 100644
 | ||||
| index e6f6296..adb09da 100644
 | ||||
| --- a/sendmail/readcf.c
 | ||||
| +++ b/sendmail/readcf.c
 | ||||
| @@ -18,6 +18,7 @@ SM_RCSID("@(#)$Id: readcf.c,v 8.692 2013-11-22 20:51:56 ca Exp $")
 | ||||
| @@ -24,6 +24,7 @@ SM_RCSID("@(#)$Id: readcf.c,v 8.692 2013-11-22 20:51:56 ca Exp $")
 | ||||
|   | ||||
|  #if NETINET || NETINET6 | ||||
|  # include <arpa/inet.h> | ||||
| +# include <netinet/ip.h>
 | ||||
|  #endif /* NETINET || NETINET6 */ | ||||
|  #endif | ||||
|   | ||||
|   | ||||
| @@ -2888,8 +2889,8 @@ static struct optioninfo
 | ||||
| @@ -2917,8 +2918,8 @@ static struct optioninfo
 | ||||
|  # define O_RCPTTHROTDELAY	0xe6 | ||||
|  	{ "BadRcptThrottleDelay",	O_RCPTTHROTDELAY,	OI_SAFE	}, | ||||
|  #endif /* _FFR_RCPTTHROTDELAY */ | ||||
|  #endif | ||||
| -#if 0 && _FFR_QOS && defined(SOL_IP) && defined(IP_TOS)
 | ||||
| -# define O_INETQOS	0xe7	/* reserved for FFR_QOS */
 | ||||
| +#if _FFR_QOS && defined(SOL_IP) && defined(IP_TOS)
 | ||||
| @ -112,7 +112,7 @@ index 2b0fbf7..86892f5 100644 | ||||
|  	{ "InetQoS",			O_INETQOS,	OI_NONE }, | ||||
|  #endif | ||||
|  #if STARTTLS && _FFR_FIPSMODE | ||||
| @@ -2914,6 +2915,77 @@ static struct optioninfo
 | ||||
| @@ -2982,6 +2983,77 @@ static struct optioninfo
 | ||||
|  	{ NULL,				'\0',		OI_NONE	} | ||||
|  }; | ||||
|   | ||||
| @ -190,9 +190,9 @@ index 2b0fbf7..86892f5 100644 | ||||
|  # define CANONIFY(val) | ||||
|   | ||||
|  # define SET_OPT_DEFAULT(opt, val)	opt = val | ||||
| @@ -4540,6 +4612,33 @@ setoption(opt, val, safe, sticky, e)
 | ||||
|  		UseCompressedIPv6Addresses = atobool(val); | ||||
| @@ -4679,6 +4751,33 @@ setoption(opt, val, safe, sticky, e)
 | ||||
|  		break; | ||||
|  # endif | ||||
|   | ||||
| +#ifdef O_INETQOS
 | ||||
| +	  case O_INETQOS:
 | ||||
| @ -225,22 +225,22 @@ index 2b0fbf7..86892f5 100644 | ||||
|  		if (tTd(37, 1)) | ||||
|  		{ | ||||
| diff --git a/sendmail/sendmail.h b/sendmail/sendmail.h
 | ||||
| index b2d0211..3bcc2e2 100644
 | ||||
| index e6cf45d..7f5cf9f 100644
 | ||||
| --- a/sendmail/sendmail.h
 | ||||
| +++ b/sendmail/sendmail.h
 | ||||
| @@ -2537,7 +2537,14 @@ EXTERN struct termescape	TermEscape;	/* terminal escape codes */
 | ||||
|  EXTERN SOCKADDR	ConnectOnlyTo;	/* override connection address (for testing) */ | ||||
| @@ -2566,6 +2566,15 @@ EXTERN SOCKADDR	ConnectOnlyTo;	/* override connection address (for testing) */
 | ||||
|  EXTERN SOCKADDR RealHostAddr;	/* address of host we are talking to */ | ||||
|  extern const SM_EXC_TYPE_T EtypeQuickAbort; /* type of a QuickAbort exception */ | ||||
| -
 | ||||
|   | ||||
| +#if _FFR_QOS
 | ||||
| +# if !defined(SOL_IP) && defined(IPPROTO_IP)
 | ||||
| +#  define SOL_IP IPPROTO_IP
 | ||||
| +# endif
 | ||||
| +# if defined(SOL_IP) && defined(IP_TOS)
 | ||||
| +EXTERN int	InetQoS;	/* QoS mapping */
 | ||||
| +extern int	InetQoS;	/* QoS mapping */
 | ||||
| +# endif
 | ||||
| +#endif
 | ||||
|   | ||||
|  EXTERN int ConnectionRateWindowSize; | ||||
|  #if STARTTLS && USE_OPENSSL_ENGINE | ||||
| +
 | ||||
|  #if _FFR_BLANKENV_MACV | ||||
|  EXTERN int Hacks;	/* bit field of run-time enabled "hacks" */ | ||||
|  # define H_LOOKUP_MACRO_IN_BLANKENV	0x0001 | ||||
| @ -1,18 +1,18 @@ | ||||
| diff --git a/sendmail/usersmtp.c b/sendmail/usersmtp.c
 | ||||
| index c217ffa..e4dadd3 100644
 | ||||
| index b4ff5cc..dddbb0a 100644
 | ||||
| --- a/sendmail/usersmtp.c
 | ||||
| +++ b/sendmail/usersmtp.c
 | ||||
| @@ -1331,9 +1331,7 @@ safesaslfile(context, file)
 | ||||
| @@ -1346,9 +1346,7 @@ safesaslfile(context, file)
 | ||||
|  { | ||||
|  	long sff; | ||||
|  	int r; | ||||
| -#if SASL <= 10515
 | ||||
|  	size_t len; | ||||
| -#endif /* SASL <= 10515 */
 | ||||
| -#endif
 | ||||
|  	char *p; | ||||
|   | ||||
|  	if (file == NULL || *file == '\0') | ||||
| @@ -1369,9 +1367,16 @@ safesaslfile(context, file)
 | ||||
| @@ -1386,9 +1384,16 @@ safesaslfile(context, file)
 | ||||
|  #endif /* SASL <= 10515 */ | ||||
|   | ||||
|  	p = (char *) file; | ||||
| @ -165,18 +165,18 @@ diff -up sendmail-8.14.3/smrsh/smrsh.c.smrsh_paths sendmail-8.14.3/smrsh/smrsh.c | ||||
| @@ -77,7 +77,7 @@ SM_IDSTR(id, "@(#)$Id: smrsh.c,v 8.65 20
 | ||||
|  # ifdef SMRSH_CMDDIR | ||||
|  #  define CMDDIR	SMRSH_CMDDIR | ||||
|  # else /* SMRSH_CMDDIR */ | ||||
|  # else | ||||
| -#  define CMDDIR	"/usr/adm/sm.bin"
 | ||||
| +#  define CMDDIR	"/etc/smrsh"
 | ||||
|  # endif /* SMRSH_CMDDIR */ | ||||
|  # endif | ||||
|  #endif /* ! CMDDIR */ | ||||
|   | ||||
| @@ -89,7 +89,7 @@ SM_IDSTR(id, "@(#)$Id: smrsh.c,v 8.65 20
 | ||||
|  # ifdef SMRSH_PATH | ||||
|  #  define PATH		SMRSH_PATH | ||||
|  # else /* SMRSH_PATH */ | ||||
|  # else | ||||
| -#  define PATH		"/bin:/usr/bin:/usr/ucb"
 | ||||
| +#  define PATH		"/bin:/usr/bin"
 | ||||
|  # endif /* SMRSH_PATH */ | ||||
|  # endif | ||||
|  #endif /* ! PATH */ | ||||
|   | ||||
| @ -1,13 +1,13 @@ | ||||
| diff --git a/sendmail/conf.c b/sendmail/conf.c
 | ||||
| index c73334e..cbb9c76 100644
 | ||||
| index 63c545c..e9fa42c 100644
 | ||||
| --- a/sendmail/conf.c
 | ||||
| +++ b/sendmail/conf.c
 | ||||
| @@ -986,7 +986,7 @@ switch_map_find(service, maptype, mapreturn)
 | ||||
| @@ -1039,7 +1039,7 @@ switch_map_find(service, maptype, mapreturn)
 | ||||
|  				if (p != NULL) | ||||
|  					*p = '\0'; | ||||
|  #ifndef SM_NSSWITCH_DELIMS | ||||
| -# define SM_NSSWITCH_DELIMS	" \t"
 | ||||
| +# define SM_NSSWITCH_DELIMS	" \t:"
 | ||||
|  #endif /* SM_NSSWITCH_DELIMS */ | ||||
|  #endif | ||||
|  				p = strpbrk(buf, SM_NSSWITCH_DELIMS); | ||||
|  				if (p != NULL) | ||||
| @ -104,7 +104,7 @@ dnl # The -t option will retry delivery if e.g. the user runs over his quota. | ||||
| dnl # | ||||
| FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl | ||||
| FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl | ||||
| FEATURE(`blacklist_recipients')dnl | ||||
| FEATURE(`blocklist_recipients')dnl | ||||
| EXPOSED_USER(`root')dnl | ||||
| dnl # | ||||
| dnl # For using Cyrus-IMAPd as POP3/IMAP server through LMTP delivery uncomment | ||||
|  | ||||
| @ -13,6 +13,9 @@ EnvironmentFile=-/etc/sysconfig/sendmail | ||||
| ExecStartPre=-/etc/mail/make | ||||
| ExecStartPre=-/etc/mail/make aliases | ||||
| ExecStart=/usr/sbin/sendmail -bd $SENDMAIL_OPTS $SENDMAIL_OPTARG | ||||
| ExecReload=/usr/bin/kill -HUP $MAINPID | ||||
| # hack to allow async reload to complete, otherwise systemd may signal error | ||||
| ExecReload=/usr/bin/sleep 2 | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
|  | ||||
| @ -3,6 +3,11 @@ | ||||
| %global with_sasl2	yes | ||||
| %global with_milter	yes | ||||
| %global with_ldap	yes | ||||
| %if 0%{?rhel} < 9 | ||||
| %global with_nis	yes | ||||
| %else | ||||
| %global with_nis	no | ||||
| %endif | ||||
| %global enable_pie	yes | ||||
| 
 | ||||
| %global sendmailcf %{_datadir}/sendmail-cf | ||||
| @ -16,13 +21,18 @@ | ||||
| # hardened build if not overridden | ||||
| %{!?_hardened_build:%global _hardened_build 1} | ||||
| 
 | ||||
| %if "%{with_nis}" == "yes" | ||||
| %global nis_cflags	-DNIS | ||||
| %global nis_ldadd	-lnsl | ||||
| %endif | ||||
| 
 | ||||
| Summary: A widely used Mail Transport Agent (MTA) | ||||
| Name: sendmail | ||||
| Version: 8.15.2 | ||||
| Release: 34%{?dist} | ||||
| Version: 8.16.1 | ||||
| Release: 11%{?dist} | ||||
| License: Sendmail | ||||
| Group: System Environment/Daemons | ||||
| URL: http://www.sendmail.org/ | ||||
| 
 | ||||
| Source0: ftp://ftp.sendmail.org/pub/sendmail/sendmail.%{version}.tar.gz | ||||
| # Systemd Service file | ||||
| Source1: sendmail.service | ||||
| @ -57,50 +67,41 @@ Source17: sendmail-etc-mail-virtusertable | ||||
| # fix man path and makemap man page | ||||
| Patch3: sendmail-8.14.4-makemapman.patch | ||||
| # fix smrsh paths | ||||
| Patch4: sendmail-8.14.3-smrsh_paths.patch | ||||
| Patch4: sendmail-8.16.1-smrsh_paths.patch | ||||
| # fix sm-client.pid path | ||||
| Patch7: sendmail-8.14.9-pid.patch | ||||
| # fix sendmail man page | ||||
| Patch10: sendmail-8.15.1-manpage.patch | ||||
| # compile with -fpie | ||||
| Patch11: sendmail-8.15.1-dynamic.patch | ||||
| Patch11: sendmail-8.16.1-dynamic.patch | ||||
| # fix cyrus path | ||||
| Patch12: sendmail-8.13.0-cyrus.patch | ||||
| # fix aliases.db path | ||||
| Patch13: sendmail-8.15.1-aliases_dir.patch | ||||
| Patch13: sendmail-8.16.1-aliases_dir.patch | ||||
| # fix vacation Makefile | ||||
| Patch14: sendmail-8.14.9-vacation.patch | ||||
| # remove version information from sendmail helpfile | ||||
| Patch15: sendmail-8.14.9-noversion.patch | ||||
| # do not accept localhost.localdomain as valid address from SMTP | ||||
| Patch16: sendmail-8.15.2-localdomain.patch | ||||
| Patch16: sendmail-8.16.1-localdomain.patch | ||||
| # build libmilter as DSO | ||||
| Patch17: sendmail-8.14.3-sharedmilter.patch | ||||
| # skip colon separator when parsing service name in ServiceSwitchFile | ||||
| Patch18: sendmail-8.15.2-switchfile.patch | ||||
| Patch18: sendmail-8.16.1-switchfile.patch | ||||
| # silence warning about missing sasl2 config in /usr/lib*, now in /etc/sasl2 | ||||
| Patch23: sendmail-8.14.8-sasl2-in-etc.patch | ||||
| Patch23: sendmail-8.16.1-sasl2-in-etc.patch | ||||
| # add QoS support, patch from Philip Prindeville <philipp@fedoraproject.org> | ||||
| # upstream reserved option ID 0xe7 for testing of this new feature, #576643 | ||||
| Patch25: sendmail-8.15.2-qos.patch | ||||
| Patch26: sendmail-8.15.2-libmilter-socket-activation.patch | ||||
| # patch provided by upstream | ||||
| Patch27: sendmail-8.15.2-smtp-session-reuse-fix.patch | ||||
| Patch28: sendmail-8.15.2-openssl-1.1.0-fix.patch | ||||
| # patch taken from Debian | ||||
| # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807258 | ||||
| Patch29: sendmail-8.15.2-format-security.patch | ||||
| # rhbz#1473971 | ||||
| Patch30: sendmail-8.15.2-openssl-1.1.0-ecdhe-fix.patch | ||||
| # Upstream patch: | ||||
| Patch31: sendmail-8.16.0.29-fix-covscan-issues.patch | ||||
| # Enable sendmail to stop using STARTTLS after a certain amount of previous failures | ||||
| # rhbz#1868041 | ||||
| Patch32: sendmail-8.15.2-tlsfallback.patch | ||||
| Patch25: sendmail-8.16.1-qos.patch | ||||
| Patch26: sendmail-8.16.1-libmilter-socket-activation.patch | ||||
| Patch27: sendmail-8.16.1-openssl-3.0-fix.patch | ||||
| 
 | ||||
| Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | ||||
| BuildRequires: make | ||||
| BuildRequires: libdb-devel | ||||
| %if "%{with_nis}" == "yes" | ||||
| BuildRequires: libnsl2-devel | ||||
| %endif | ||||
| BuildRequires: tinycdb-devel | ||||
| BuildRequires: groff | ||||
| BuildRequires: ghostscript | ||||
| BuildRequires: m4 | ||||
| @ -125,6 +126,8 @@ Requires: %{_sbindir}/saslauthd | ||||
| %if "%{with_ldap}" == "yes" | ||||
| BuildRequires: openldap-devel openssl-devel | ||||
| %endif | ||||
| # Old NetworkManager expects the dispatcher scripts in a different place | ||||
| Conflicts: NetworkManager < 1.20 | ||||
| 
 | ||||
| 
 | ||||
| %description | ||||
| @ -140,7 +143,6 @@ Sendmail, you can install the sendmail-doc package. | ||||
| 
 | ||||
| %package doc | ||||
| Summary: Documentation about the Sendmail Mail Transport Agent program | ||||
| Group: Documentation | ||||
| BuildArch: noarch | ||||
| Requires: sendmail = %{version}-%{release} | ||||
| 
 | ||||
| @ -151,7 +153,6 @@ contributed scripts and tools for use with Sendmail. | ||||
| 
 | ||||
| %package milter-devel | ||||
| Summary: Development files for the sendmail milter library | ||||
| Group: Development/Libraries | ||||
| Requires: sendmail-milter%{?_isa} = %{version}-%{release} | ||||
| # The following Provides: and Obsoletes: can be dropped in f28+ | ||||
| Provides: sendmail-devel%{?_isa} = %{version}-%{release} | ||||
| @ -163,7 +164,6 @@ Include files and devel libraries for the milter add-ons as part of sendmail. | ||||
| 
 | ||||
| %package cf | ||||
| Summary: The files needed to reconfigure Sendmail | ||||
| Group: System Environment/Daemons | ||||
| Requires: sendmail = %{version}-%{release} | ||||
| BuildArch: noarch | ||||
| Requires: m4 | ||||
| @ -176,7 +176,6 @@ your sendmail.cf file. | ||||
| 
 | ||||
| %package milter | ||||
| Summary: The sendmail milter library | ||||
| Group: System Environment/Libraries | ||||
| 
 | ||||
| %description milter | ||||
| The sendmail Mail Filter API (Milter) is designed to allow third-party | ||||
| @ -206,12 +205,7 @@ cp devtools/M4/UNIX/{,shared}library.m4 | ||||
| %patch23 -p1 -b .sasl2-in-etc | ||||
| %patch25 -p1 -b .qos | ||||
| %patch26 -p1 -b .libmilter-socket-activation | ||||
| %patch27 -p1 -b .smtp-session-reuse-fix | ||||
| %patch28 -p1 -b .openssl-1.1.0-fix | ||||
| %patch29 -p1 -b .format-security | ||||
| %patch30 -p1 -b .openssl-1.1.0-ecdhe-fix | ||||
| %patch31 -p1 -b .fix-covscan-issues | ||||
| %patch32 -p1 | ||||
| %patch27 -p1 -b .openssl-3.0-fix | ||||
| 
 | ||||
| for f in RELEASE_NOTES contrib/etrn.0; do | ||||
| 	iconv -f iso8859-1 -t utf8 -o ${f}{_,} && | ||||
| @ -223,11 +217,11 @@ sed -i 's|/usr/local/bin/perl|%{_bindir}/perl|' contrib/*.pl | ||||
| %build | ||||
| # generate redhat config file | ||||
| cat > redhat.config.m4 << EOF | ||||
| define(\`confMAPDEF', \`-DNEWDB -DNIS -DMAP_REGEX -DSOCKETMAP -DNAMED_BIND=1') | ||||
| define(\`confMAPDEF', \`-DNEWDB -DCDB %{?nis_cflags} -DMAP_REGEX -DSOCKETMAP -DNAMED_BIND=1') | ||||
| define(\`confOPTIMIZE', \`\`\`\`${RPM_OPT_FLAGS}'''') | ||||
| define(\`confENVDEF', \`-I%{_includedir}/libdb -I%{_prefix}/kerberos/include -Wall -DXDEBUG=0 -DNETINET6 -DHES_GETMAILHOST -DUSE_VENDOR_CF_PATH=1 -D_FFR_LINUX_MHNL -D_FFR_QOS -D_FILE_OFFSET_BITS=64') | ||||
| define(\`confENVDEF', \`-I%{_includedir}/libdb -I%{_prefix}/kerberos/include -Wall -DXDEBUG=0 -DNETINET6 -DHES_GETMAILHOST -DUSE_VENDOR_CF_PATH=1 -D_FFR_LINUX_MHNL -D_FFR_QOS -D_FILE_OFFSET_BITS=64 -DHAS_GETHOSTBYNAME2') | ||||
| define(\`confLIBDIRS', \`-L%{_prefix}/kerberos/%{_lib}') | ||||
| define(\`confLIBS', \`-lnsl -lcrypt -ldb -lresolv') | ||||
| define(\`confLIBS', \`%{?nis_ldadd} -lcrypt -ldb -lcdb -lresolv') | ||||
| %{?_hardened_build:define(\`confLDOPTS', \`-Xlinker -z -Xlinker relro -Xlinker -z -Xlinker now')} | ||||
| define(\`confMANOWN', \`root') | ||||
| define(\`confMANGRP', \`root') | ||||
| @ -238,6 +232,7 @@ define(\`confMAN8SRC', \`8') | ||||
| define(\`confSTDIR', \`%{stdir}') | ||||
| define(\`STATUS_FILE', \`%{stdir}/statistics') | ||||
| define(\`confLIBSEARCH', \`db resolv 44bsd') | ||||
| define(\`confCC', \`%{__cc}') | ||||
| EOF | ||||
| #' | ||||
| 
 | ||||
| @ -263,7 +258,7 @@ EOF | ||||
| 
 | ||||
| %if "%{with_tls}" == "yes" | ||||
| cat >> redhat.config.m4 << EOF | ||||
| APPENDDEF(\`conf_sendmail_ENVDEF', \`-DSTARTTLS -D_FFR_TLS_1 -D_FFR_TLS_EC -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE')dnl | ||||
| APPENDDEF(\`conf_sendmail_ENVDEF', \`-DSTARTTLS -D_FFR_TLS_1 -DTLS_EC -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE -DDANE')dnl | ||||
| APPENDDEF(\`conf_sendmail_LIBS', \`-lssl -lcrypto')dnl | ||||
| EOF | ||||
| %endif | ||||
| @ -305,15 +300,13 @@ done | ||||
| make -C doc/op op.pdf | ||||
| 
 | ||||
| %install | ||||
| rm -rf %{buildroot} | ||||
| 
 | ||||
| # create directories | ||||
| for d in %{_bindir} %{_sbindir} %{_includedir}/libmilter \ | ||||
| 	%{_libdir} %{_mandir}/man{1,5,8} %{maildir} %{stdir} %{spooldir} \ | ||||
| 	%{_docdir}/sendmail %{sendmailcf} %{_sysconfdir}/smrsh\ | ||||
| 	%{spooldir}/clientmqueue %{_sysconfdir}/sysconfig %{_initrddir} \ | ||||
| 	%{_sysconfdir}/pam.d %{_docdir}/sendmail/contrib \ | ||||
| 	%{_sysconfdir}/NetworkManager/dispatcher.d | ||||
| 	%{_prefix}/lib/NetworkManager/dispatcher.d | ||||
| do | ||||
| 	install -m 755 -d %{buildroot}$d | ||||
| done | ||||
| @ -426,7 +419,7 @@ touch %{buildroot}%{maildir}/aliasesdb-stamp | ||||
| touch %{buildroot}%{spooldir}/clientmqueue/sm-client.st | ||||
| 
 | ||||
| install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/sendmail | ||||
| install -p -m 755 %{SOURCE2} %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/10-sendmail | ||||
| install -p -m 755 %{SOURCE2} %{buildroot}%{_prefix}/lib/NetworkManager/dispatcher.d/10-sendmail | ||||
| install -p -m 755 %{SOURCE3} %{buildroot}%{maildir}/make | ||||
| install -p -m 644 %{SOURCE5} %{buildroot}%{maildir}/Makefile | ||||
| 
 | ||||
| @ -573,7 +566,7 @@ if [ ! -f %{sslcert} ]; then | ||||
| 
 | ||||
|   %{_bindir}/openssl req -new -key %{sslkey} -x509 -sha256 -days 365 -set_serial $RANDOM -out %{sslcert} \ | ||||
|     -subj "/C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=${FQDN}/emailAddress=root@${FQDN}" | ||||
|   chmod 644 %{sslcert} | ||||
|   chmod 600 %{sslcert} | ||||
| fi | ||||
| 
 | ||||
| exit 0 | ||||
| @ -585,9 +578,7 @@ if [ $1 = 0 ]; then | ||||
| fi | ||||
| exit 0 | ||||
| 
 | ||||
| %post milter -p /sbin/ldconfig | ||||
| 
 | ||||
| %postun milter -p /sbin/ldconfig | ||||
| %ldconfig_scriptlets milter | ||||
| 
 | ||||
| 
 | ||||
| %files | ||||
| @ -675,7 +666,7 @@ exit 0 | ||||
| %{_unitdir}/sm-client.service | ||||
| %config(noreplace) %{_sysconfdir}/sysconfig/sendmail | ||||
| %config(noreplace) %{_sysconfdir}/pam.d/smtp.sendmail | ||||
| %{_sysconfdir}/NetworkManager/dispatcher.d/10-sendmail | ||||
| %{_prefix}/lib/NetworkManager | ||||
| 
 | ||||
| %if "%{with_sasl2}" == "yes" | ||||
| %config(noreplace) %{_sysconfdir}/sasl2/Sendmail.conf | ||||
| @ -718,27 +709,100 @@ exit 0 | ||||
| 
 | ||||
| 
 | ||||
| %changelog | ||||
| * Tue Dec 01 2020 Tomas Korbar <tkorbar@redhat.com> - 8.15.2-34 | ||||
| - Fix verification of ghost files | ||||
| - Resolves: rhbz#1730804 | ||||
| * Mon Aug 14 2023 Jaroslav Škarvada <jskarvad@redhat.com> - 8.16.1-11 | ||||
| - Fixed verification of the ghost files | ||||
|   Resolves: rhbz#2052091 | ||||
| 
 | ||||
| * Tue Sep 08 2020 Tomas Korbar <tkorbar@redhat.com> - 8.15.2-33 | ||||
| - Backport confTLS_FALLBACK_TO_CLEAR option | ||||
| - Resolves: rhbz#1868041 | ||||
| * Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 8.16.1-10 | ||||
| - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags | ||||
|   Related: rhbz#1991688 | ||||
| 
 | ||||
| * Fri May 03 2019 Ondřej Lysoněk <olysonek@redhat.com> - 8.15.2-32 | ||||
| * Wed Jun 16 2021 Mohan Boddu <mboddu@redhat.com> - 8.16.1-9 | ||||
| - Rebuilt for RHEL 9 BETA for openssl 3.0 | ||||
|   Related: rhbz#1971065 | ||||
| 
 | ||||
| * Fri May  7 2021 Jaroslav Škarvada <jskarvad@redhat.com> - 8.16.1-8 | ||||
| - Added support for openssl-3.0 | ||||
|   Resolves: rhbz#1953504 | ||||
| 
 | ||||
| * Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 8.16.1-7 | ||||
| - Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 | ||||
| 
 | ||||
| * Thu Mar 25 2021 Jaroslav Škarvada <jskarvad@redhat.com> - 8.16.1-6 | ||||
| - Disable NIS support for RHEL9+ | ||||
| 
 | ||||
| * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 8.16.1-5 | ||||
| - Rebuilt for updated systemd-rpm-macros | ||||
|   See https://pagure.io/fesco/issue/2583. | ||||
| 
 | ||||
| * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 8.16.1-4 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild | ||||
| 
 | ||||
| * Wed Dec  2 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 8.16.1-3 | ||||
| - Enabled CDB map support | ||||
|   Related: rhbz#1781181 | ||||
| 
 | ||||
| * Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 8.16.1-2 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild | ||||
| 
 | ||||
| * Tue Jul  7 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 8.16.1-1 | ||||
| - New version | ||||
|   Resolves: rhbz#1853885 | ||||
| - Dropped smtp-session-reuse-fix, openssl-1.1.0-fix, openssl-1.1.0-ecdhe-fix, | ||||
|   gethostbyname2, fix-covscan-issues, gcc-10-fix patches (not needed) | ||||
| - Dropped format-security patch (upstreamed) | ||||
| - Updated patches | ||||
| 
 | ||||
| * Fri Apr 03 2020 Tom Stellard <tstellar@redhat.com> - 8.15.2-44 | ||||
| - Specify value for confCC in redhat.config.m4 | ||||
| 
 | ||||
| * Mon Feb 10 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-43 | ||||
| - Fixed FTBFS with gcc-10 | ||||
|   Resolves: rhbz#1800082 | ||||
| - De-fuzzified fix-covscan-issues patch | ||||
| 
 | ||||
| * Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 8.15.2-42 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild | ||||
| 
 | ||||
| * Mon Nov 04 2019 Ondřej Lysoněk <olysonek@redhat.com> - 8.15.2-41 | ||||
| - Fix issues discovered by Coverity scan | ||||
| - Resolves: rhbz#1602689 | ||||
| 
 | ||||
| * Mon Nov 19 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-31 | ||||
| * Thu Aug 22 2019 Lubomir Rintel <lkundrak@v3.sk> - 8.15.2-40 | ||||
| - Move the NetworkManager dispatcher script out of /etc | ||||
| 
 | ||||
| * Fri Aug  2 2019 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-39 | ||||
| - Used gethostbyname2 instead of gethostbyname to fix FTBFS caused by | ||||
|   glibc update dropping support for obsolete RES_USE_INET6 | ||||
|   Resolves: rhbz#1736650 | ||||
| 
 | ||||
| * Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.15.2-38 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild | ||||
| 
 | ||||
| * Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.15.2-37 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild | ||||
| 
 | ||||
| * Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 8.15.2-36 | ||||
| - Rebuilt for libcrypt.so.2 (#1666033) | ||||
| 
 | ||||
| * Mon Nov 19 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-35 | ||||
| - Used _prefix macro for more hardcoded /usr directories | ||||
| 
 | ||||
| * Mon Nov 19 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-34 | ||||
| - Used _prefix macro for /usr | ||||
|   Resolves: rhbz#1650256 | ||||
| 
 | ||||
| * Thu Nov 15 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-30 | ||||
| - Dropped sysvinit support | ||||
|   Resolves: rhbz#1610287 | ||||
| * Mon Oct 29 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-33 | ||||
| - Dropped hesiod support | ||||
|   Resolves: rhbz#1638491 | ||||
|   Resolves: rhbz#1643264 | ||||
| 
 | ||||
| * Tue Oct 16 2018 Peter Robinson <pbrobinson@fedoraproject.org> 8.15.2-32 | ||||
| - Drop old pre F-23 conditionals, minor spec cleanups | ||||
| 
 | ||||
| * Wed Aug 29 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-31 | ||||
| - Added support for sendmail service reload | ||||
|   Resolves: rhbz#1618552 | ||||
| 
 | ||||
| * Mon Aug 20 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 8.15.2-30 | ||||
| - Fixed sendmail.pem unsafe: Group readable file | ||||
| 
 | ||||
| * Mon Jul 23 2018 Robert Scheck <robert@fedoraproject.org> - 8.15.2-29 | ||||
| - Add basic sendmail TLS configuration by default (#1607314 #c11) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user