[PATCH] rsaenh: do not use stack variables out of frame (Coverity)
Marcus Meissner
marcus at jet.franken.de
Sat Jul 15 03:07:38 CDT 2017
1414721 Pointer to local outside scope
These harmless looking assignments are of the form:
algid = BCRYPT_SHA512_ALGORITHM;
with ../../include/bcrypt.h:#define BCRYPT_SHA512_ALGORITHM (const WCHAR []){'S','H','A','5','1','2',0}
this is
algid = temporary allocated stack variable
The stack array however goes invalid as soon as it leaves the "switch" case.
Use a stack temporary array to avoid this confusion.
Signed-off-by: Marcus Meissner <marcus at jet.franken.de>
---
dlls/rsaenh/implglue.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/rsaenh/implglue.c b/dlls/rsaenh/implglue.c
index 69c7f80694..a643529222 100644
--- a/dlls/rsaenh/implglue.c
+++ b/dlls/rsaenh/implglue.c
@@ -50,8 +50,9 @@ BOOL WINAPI SystemFunction036(PVOID pbBuffer, ULONG dwLen);
BOOL init_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext)
{
- const WCHAR *algid = NULL;
+ WCHAR algid[20];
+ algid[0] = 0;
switch (aiAlgid)
{
case CALG_MD2:
@@ -71,19 +72,19 @@ BOOL init_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext)
break;
case CALG_SHA_256:
- algid = BCRYPT_SHA256_ALGORITHM;
+ lstrcpyW(algid,BCRYPT_SHA256_ALGORITHM);
break;
case CALG_SHA_384:
- algid = BCRYPT_SHA384_ALGORITHM;
+ lstrcpyW(algid,BCRYPT_SHA384_ALGORITHM);
break;
case CALG_SHA_512:
- algid = BCRYPT_SHA512_ALGORITHM;
+ lstrcpyW(algid,BCRYPT_SHA512_ALGORITHM);
break;
}
- if (algid)
+ if (algid[0])
{
BCRYPT_ALG_HANDLE provider;
NTSTATUS status;
--
2.13.2
More information about the wine-patches
mailing list