Commit 8aa02e97 authored by Ben Laurie's avatar Ben Laurie
Browse files

Make sure a bad parameter to RSA_verify_PKCS1_PSS() doesn't lead to a crash.

(Coverity ID 135).
parent a68c7b91
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -448,6 +448,7 @@ void ERR_load_RSA_strings(void);

/* Reason codes. */
#define RSA_R_ALGORITHM_MISMATCH			 100
#define RSA_R_BAD_ARGUMENT				 149
#define RSA_R_BAD_E_VALUE				 101
#define RSA_R_BAD_FIXED_HEADER_DECRYPT			 102
#define RSA_R_BAD_PAD_BYTE_COUNT			 103
+2 −1
Original line number Diff line number Diff line
/* crypto/rsa/rsa_err.c */
/* ====================================================================
 * Copyright (c) 1999-2007 The OpenSSL Project.  All rights reserved.
 * Copyright (c) 1999-2008 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
@@ -124,6 +124,7 @@ static ERR_STRING_DATA RSA_str_functs[]=
static ERR_STRING_DATA RSA_str_reasons[]=
	{
{ERR_REASON(RSA_R_ALGORITHM_MISMATCH)    ,"algorithm mismatch"},
{ERR_REASON(RSA_R_BAD_ARGUMENT)          ,"bad argument"},
{ERR_REASON(RSA_R_BAD_E_VALUE)           ,"bad e value"},
{ERR_REASON(RSA_R_BAD_FIXED_HEADER_DECRYPT),"bad fixed header decrypt"},
{ERR_REASON(RSA_R_BAD_PAD_BYTE_COUNT)    ,"bad pad byte count"},
+6 −0
Original line number Diff line number Diff line
@@ -81,6 +81,12 @@ int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
	EVP_MD_CTX ctx;
	unsigned char H_[EVP_MAX_MD_SIZE];

	if (Hash == NULL)
		{
		RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_BAD_ARGUMENT);
		goto err;
		}

	hLen = EVP_MD_size(Hash);
	/*
	 * Negative sLen has special meanings:
+1 −0
Original line number Diff line number Diff line
@@ -412,6 +412,7 @@ printf("\n");

	if (!clear)
		{
		/* !clear => s->read_hash != NULL => mac_size != -1 */
		mac_size=EVP_MD_CTX_size(s->read_hash);

		if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH+extra+mac_size)