Add fix for memleak uncovered by covscan
Related: rhbz#1995600 Signed-off-by: Simo Sorce <simo@redhat.com>
This commit is contained in:
		
							parent
							
								
									e7f394ada9
								
							
						
					
					
						commit
						9420929d36
					
				| @ -61,9 +61,9 @@ diff -uPr cyrus-sasl-2.1.27/plugins/scram.c cyrus-sasl-2.1.27.ossl3/plugins/scra | |||||||
|  /* The result variable need to point to a buffer big enough for the [SHA-1] hash */ |  /* The result variable need to point to a buffer big enough for the [SHA-1] hash */ | ||||||
|  static void |  static void | ||||||
| diff -uPr cyrus-sasl-2.1.27/saslauthd/lak.c cyrus-sasl-2.1.27.ossl3/saslauthd/lak.c
 | diff -uPr cyrus-sasl-2.1.27/saslauthd/lak.c cyrus-sasl-2.1.27.ossl3/saslauthd/lak.c
 | ||||||
| --- cyrus-sasl-2.1.27/saslauthd/lak.c	2021-10-06 11:29:53.281375315 -0400
 | --- cyrus-sasl-2.1.27/saslauthd/lak.c	2022-01-09 11:30:50.000000000 -0400
 | ||||||
| +++ cyrus-sasl-2.1.27.ossl3/saslauthd/lak.c	2021-10-06 11:30:59.022400245 -0400
 | +++ cyrus-sasl-2.1.27.ossl3/saslauthd/lak.c	2022-01-09 11:30:50.000000001 -0400
 | ||||||
| @@ -1805,13 +1805,29 @@
 | @@ -1806,18 +1806,36 @@
 | ||||||
|  		return rc; |  		return rc; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @ -71,13 +71,13 @@ diff -uPr cyrus-sasl-2.1.27/saslauthd/lak.c cyrus-sasl-2.1.27.ossl3/saslauthd/la | |||||||
| -	EVP_DigestUpdate(mdctx, passwd, strlen(passwd));
 | -	EVP_DigestUpdate(mdctx, passwd, strlen(passwd));
 | ||||||
| +	rc = EVP_DigestInit(mdctx, md);
 | +	rc = EVP_DigestInit(mdctx, md);
 | ||||||
| +	if (rc != 1) {
 | +	if (rc != 1) {
 | ||||||
| +		EVP_MD_CTX_free(mdctx);
 | +		rc = LAK_FAIL;
 | ||||||
| +		return LAK_FAIL;
 | +		goto done;
 | ||||||
| +	}
 | +	}
 | ||||||
| +	rc = EVP_DigestUpdate(mdctx, passwd, strlen(passwd));
 | +	rc = EVP_DigestUpdate(mdctx, passwd, strlen(passwd));
 | ||||||
| +	if (rc != 1) {
 | +	if (rc != 1) {
 | ||||||
| +		EVP_MD_CTX_free(mdctx);
 | +		rc = LAK_FAIL;
 | ||||||
| +		return LAK_FAIL;
 | +		goto done;
 | ||||||
| +	}
 | +	}
 | ||||||
|  	if (hrock->salted) { |  	if (hrock->salted) { | ||||||
| -		EVP_DigestUpdate(mdctx, &cred[EVP_MD_size(md)],
 | -		EVP_DigestUpdate(mdctx, &cred[EVP_MD_size(md)],
 | ||||||
| @ -85,16 +85,25 @@ diff -uPr cyrus-sasl-2.1.27/saslauthd/lak.c cyrus-sasl-2.1.27.ossl3/saslauthd/la | |||||||
| +		rc = EVP_DigestUpdate(mdctx, &cred[EVP_MD_size(md)],
 | +		rc = EVP_DigestUpdate(mdctx, &cred[EVP_MD_size(md)],
 | ||||||
| +				      clen - EVP_MD_size(md));
 | +				      clen - EVP_MD_size(md));
 | ||||||
| +		if (rc != 1) {
 | +		if (rc != 1) {
 | ||||||
| +			EVP_MD_CTX_free(mdctx);
 | +		    rc = LAK_FAIL;
 | ||||||
| +			return LAK_FAIL;
 | +		    goto done;
 | ||||||
| +		}
 | +		}
 | ||||||
| +	}
 | +	}
 | ||||||
| +	rc = EVP_DigestFinal(mdctx, digest, NULL);
 | +	rc = EVP_DigestFinal(mdctx, digest, NULL);
 | ||||||
| +	if (rc != 1) {
 | +	if (rc != 1) {
 | ||||||
| +		EVP_MD_CTX_free(mdctx);
 | +		rc = LAK_FAIL;
 | ||||||
| +		return LAK_FAIL;
 | +		goto done;
 | ||||||
|  	} |  	} | ||||||
| -	EVP_DigestFinal(mdctx, digest, NULL);
 | -	EVP_DigestFinal(mdctx, digest, NULL);
 | ||||||
|  	EVP_MD_CTX_free(mdctx); | -	EVP_MD_CTX_free(mdctx);
 | ||||||
|   |   | ||||||
|  	rc = memcmp((char *)cred, (char *)digest, EVP_MD_size(md)); |  	rc = memcmp((char *)cred, (char *)digest, EVP_MD_size(md)); | ||||||
|  | +	rc = rc ? LAK_INVALID_PASSWORD : LAK_OK;
 | ||||||
|  | +done:
 | ||||||
|  | +	EVP_MD_CTX_free(mdctx);
 | ||||||
|  |  	free(cred); | ||||||
|  | -	return rc ? LAK_INVALID_PASSWORD : LAK_OK;
 | ||||||
|  | +	return rc;
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  #endif /* HAVE_OPENSSL */ | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
| Summary: The Cyrus SASL library | Summary: The Cyrus SASL library | ||||||
| Name: cyrus-sasl | Name: cyrus-sasl | ||||||
| Version: 2.1.27 | Version: 2.1.27 | ||||||
| Release: 18%{?dist} | Release: 19%{?dist} | ||||||
| License: BSD with advertising | License: BSD with advertising | ||||||
| URL: https://www.cyrusimap.org/sasl/ | URL: https://www.cyrusimap.org/sasl/ | ||||||
| 
 | 
 | ||||||
| @ -398,6 +398,10 @@ getent passwd %{username} >/dev/null || useradd -r -g %{username} -d %{homedir} | |||||||
| %{_sbindir}/sasl2-shared-mechlist | %{_sbindir}/sasl2-shared-mechlist | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Feb  9 2022 Simo Sorce <simo@redhat.com> - 2.1.27-19 | ||||||
|  | - Fix a memleak in one of the OpenSSL 3 compat patches | ||||||
|  |   found by covscan | ||||||
|  | 
 | ||||||
| * Mon Feb  7 2022 Simo Sorce <simo@redhat.com> - 2.1.27-18 | * Mon Feb  7 2022 Simo Sorce <simo@redhat.com> - 2.1.27-18 | ||||||
| - Update OpenSSL 3 related compatibility patch backports | - Update OpenSSL 3 related compatibility patch backports | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user