From: Benoît Legat <benoit.legat@gmail.com> --- dlls/crypt32/pfx.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/dlls/crypt32/pfx.c b/dlls/crypt32/pfx.c index 3d0caaf8cdd..5ece0bc9080 100644 --- a/dlls/crypt32/pfx.c +++ b/dlls/crypt32/pfx.c @@ -448,29 +448,37 @@ BOOL WINAPI PFXExportCertStoreEx( HCERTSTORE store, CRYPT_DATA_BLOB *pfx, const if (!pfx->pbData) { - /* Size query. */ pfx_size = 0; params.pfx_data = NULL; params.pfx_size = &pfx_size; + status = CRYPT32_CALL( export_cert_store, ¶ms ); + if (status) + { + WARN( "unix export_cert_store failed %08lx\n", (DWORD)status ); + SetLastError( RtlNtStatusToDosError( status ) ); + } + else + { + pfx->cbData = pfx_size; + ret = TRUE; + } } else { - /* Actual export. */ pfx_size = pfx->cbData; params.pfx_data = pfx->pbData; params.pfx_size = &pfx_size; - } - - status = CRYPT32_CALL( export_cert_store, ¶ms ); - if (status) - { - WARN( "unix export_cert_store failed %08lx\n", (DWORD)status ); - SetLastError( RtlNtStatusToDosError( status ) ); - } - else - { - pfx->cbData = pfx_size; - ret = TRUE; + status = CRYPT32_CALL( export_cert_store, ¶ms ); + if (status) + { + WARN( "unix export_cert_store failed %08lx\n", (DWORD)status ); + SetLastError( RtlNtStatusToDosError( status ) ); + } + else + { + pfx->cbData = pfx_size; + ret = TRUE; + } } CryptMemFree( key_blob ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10532