rsaenh(1/3): Add error messages for failed private key imports
Juan Lang
juan.lang at gmail.com
Mon Oct 31 12:48:04 CDT 2011
--Juan
-------------- next part --------------
From af93e4daf9db172be849b3cd94674ab12219b27c Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Wed, 26 Oct 2011 16:02:03 -0700
Subject: [PATCH 2/4] Add error messages for failed private key imports
---
dlls/rsaenh/rsaenh.c | 22 +++++++++++++++++++---
1 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c
index db58e44..f332cfb 100644
--- a/dlls/rsaenh/rsaenh.c
+++ b/dlls/rsaenh/rsaenh.c
@@ -2731,11 +2731,27 @@ static BOOL import_private_key(HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDat
return FALSE;
}
- if ((dwDataLen < sizeof(BLOBHEADER) + sizeof(RSAPUBKEY)) ||
- (pRSAPubKey->magic != RSAENH_MAGIC_RSA2) ||
- (dwDataLen < sizeof(BLOBHEADER) + sizeof(RSAPUBKEY) +
+ if ((dwDataLen < sizeof(BLOBHEADER) + sizeof(RSAPUBKEY)))
+ {
+ ERR("datalen %d not long enough for a BLOBHEADER + RSAPUBKEY\n",
+ dwDataLen);
+ SetLastError(NTE_BAD_DATA);
+ return FALSE;
+ }
+ if (pRSAPubKey->magic != RSAENH_MAGIC_RSA2)
+ {
+ ERR("unexpected magic %08x\n", pRSAPubKey->magic);
+ SetLastError(NTE_BAD_DATA);
+ return FALSE;
+ }
+ if ((dwDataLen < sizeof(BLOBHEADER) + sizeof(RSAPUBKEY) +
(2 * pRSAPubKey->bitlen >> 3) + (5 * ((pRSAPubKey->bitlen+8)>>4))))
{
+ DWORD expectedLen = sizeof(BLOBHEADER) + sizeof(RSAPUBKEY) +
+ (2 * pRSAPubKey->bitlen >> 3) + (5 * ((pRSAPubKey->bitlen+8)>>4));
+
+ ERR("blob too short for pub key: expect %d, got %d\n",
+ expectedLen, dwDataLen);
SetLastError(NTE_BAD_DATA);
return FALSE;
}
--
1.7.3.1
More information about the wine-patches
mailing list