From c10a030ec62dd94b8fe036e101f80d1e85026f81 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Thu, 15 Apr 2021 15:55:43 +0200 Subject: [PATCH] Fixed use fo crypto_rsa_public_encrypt in license module --- libfreerdp/core/license.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libfreerdp/core/license.c b/libfreerdp/core/license.c index e12cd64ad..b9cde0115 100644 --- a/libfreerdp/core/license.c +++ b/libfreerdp/core/license.c @@ -747,9 +747,14 @@ BOOL license_encrypt_premaster_secret(rdpLicense* license) license->EncryptedPremasterSecret->type = BB_RANDOM_BLOB; license->EncryptedPremasterSecret->length = PREMASTER_SECRET_LENGTH; #ifndef LICENSE_NULL_PREMASTER_SECRET - license->EncryptedPremasterSecret->length = crypto_rsa_public_encrypt( - license->PremasterSecret, PREMASTER_SECRET_LENGTH, license->ModulusLength, license->Modulus, - license->Exponent, EncryptedPremasterSecret); + { + SSIZE_T length = crypto_rsa_public_encrypt( + license->PremasterSecret, PREMASTER_SECRET_LENGTH, license->ModulusLength, + license->Modulus, license->Exponent, EncryptedPremasterSecret); + if ((length < 0) || (length > UINT16_MAX)) + return FALSE; + license->EncryptedPremasterSecret->length = (UINT16)length; + } #endif license->EncryptedPremasterSecret->data = EncryptedPremasterSecret; return TRUE;