From 5652a19110caa451f1ba0d1c8252fc278d81f7e7 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Wed, 26 Sep 2018 13:09:53 +0300 Subject: [PATCH] crypt32: Fix output buffer handling for CRYPT_STRING_BINARY case. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/crypt32/base64.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/dlls/crypt32/base64.c b/dlls/crypt32/base64.c index e25e4c10ff0..5caab97b171 100644 --- a/dlls/crypt32/base64.c +++ b/dlls/crypt32/base64.c @@ -77,23 +77,20 @@ static BOOL EncodeBinaryToBinaryA(const BYTE *pbBinary, { BOOL ret = TRUE; - if (*pcchString < cbBinary) + if (pszString) { - if (!pszString) - *pcchString = cbBinary; - else + if (*pcchString < cbBinary) { SetLastError(ERROR_INSUFFICIENT_BUFFER); - *pcchString = cbBinary; ret = FALSE; } + else if (cbBinary) + memcpy(pszString, pbBinary, cbBinary); } else - { - if (cbBinary) - memcpy(pszString, pbBinary, cbBinary); - *pcchString = cbBinary; - } + + *pcchString = cbBinary; + return ret; }