crypt32: Set correct return value if CryptMemAlloc fails
Sebastian Lackner
sebastian at fds-team.de
Sat Dec 7 23:16:39 CST 2013
This patch (hopefully) fixes all positions in crypt32 where the return
value is not set correctly if CryptMemAlloc fails (the value is still
set to TRUE from a previous statement).
---
dlls/crypt32/cert.c | 8 ++++++++
dlls/crypt32/chain.c | 2 ++
dlls/crypt32/filestore.c | 2 ++
dlls/crypt32/object.c | 2 ++
4 files changed, 14 insertions(+)
-------------- next part --------------
>From 8255bf5d6b35ad6318b8e4b38db67bc09666369e Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian at fds-team.de>
Date: Sun, 8 Dec 2013 06:09:17 +0100
Subject: crypt32: Set correct return value if CryptMemAlloc fails
---
dlls/crypt32/cert.c | 8 ++++++++
dlls/crypt32/chain.c | 2 ++
dlls/crypt32/filestore.c | 2 ++
dlls/crypt32/object.c | 2 ++
4 files changed, 14 insertions(+)
diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c
index 0f14ffb..074b924 100644
--- a/dlls/crypt32/cert.c
+++ b/dlls/crypt32/cert.c
@@ -1466,6 +1466,8 @@ static BOOL compare_cert_by_cert_id(PCCERT_CONTEXT pCertContext, DWORD dwType,
ret = !memcmp(buf, id->u.KeyId.pbData, size);
CryptMemFree(buf);
}
+ else
+ ret = FALSE;
}
else
ret = FALSE;
@@ -1506,6 +1508,8 @@ static BOOL compare_cert_by_signature_hash(PCCERT_CONTEXT pCertContext, DWORD dw
ret = !memcmp(buf, hash->pbData, size);
CryptMemFree(buf);
}
+ else
+ ret = FALSE;
}
else
ret = FALSE;
@@ -2375,10 +2379,14 @@ BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCrypt
}
CryptMemFree(hash);
}
+ else
+ ret = FALSE;
}
}
CryptMemFree(encoded);
}
+ else
+ ret = FALSE;
}
return ret;
}
diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c
index 1a83dee..427db63 100644
--- a/dlls/crypt32/chain.c
+++ b/dlls/crypt32/chain.c
@@ -306,6 +306,8 @@ static BOOL CRYPT_IsCertificateSelfSigned(PCCERT_CONTEXT cert)
ret = !memcmp(buf, info->KeyId.pbData, size);
CryptMemFree(buf);
}
+ else
+ ret = FALSE;
}
else
ret = FALSE;
diff --git a/dlls/crypt32/filestore.c b/dlls/crypt32/filestore.c
index 81c8c5e..0f7d8d5 100644
--- a/dlls/crypt32/filestore.c
+++ b/dlls/crypt32/filestore.c
@@ -122,6 +122,8 @@ static BOOL CRYPT_ReadBlobFromFile(HANDLE file, PCERT_BLOB blob)
ret = ReadFile(file, blob->pbData, blob->cbData, &read, NULL) && read == blob->cbData;
if (!ret) CryptMemFree(blob->pbData);
}
+ else
+ ret = FALSE;
}
return ret;
}
diff --git a/dlls/crypt32/object.c b/dlls/crypt32/object.c
index 39955ce..0320cfd 100644
--- a/dlls/crypt32/object.c
+++ b/dlls/crypt32/object.c
@@ -55,6 +55,8 @@ static BOOL CRYPT_ReadBlobFromFile(LPCWSTR fileName, PCERT_BLOB blob)
ret = ReadFile(file, blob->pbData, blob->cbData, &read, NULL) && read == blob->cbData;
if (!ret) CryptMemFree(blob->pbData);
}
+ else
+ ret = FALSE;
}
CloseHandle(file);
}
--
1.7.9.5
More information about the wine-patches
mailing list