Alexandre Julliard : rsaenh: Fix padding bytes check for 0-byte payload.
Alexandre Julliard
julliard at winehq.org
Wed Dec 2 10:22:14 CST 2009
Module: wine
Branch: master
Commit: b402b7878063a3dbd8eda37fae9c660ec78fbf40
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b402b7878063a3dbd8eda37fae9c660ec78fbf40
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Dec 2 14:59:56 2009 +0100
rsaenh: Fix padding bytes check for 0-byte payload.
---
dlls/crypt32/tests/protectdata.c | 20 ++++++--------------
dlls/rsaenh/rsaenh.c | 2 +-
2 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/dlls/crypt32/tests/protectdata.c b/dlls/crypt32/tests/protectdata.c
index c3173c3..91bad8e 100644
--- a/dlls/crypt32/tests/protectdata.c
+++ b/dlls/crypt32/tests/protectdata.c
@@ -213,7 +213,7 @@ static void test_cryptunprotectdata(void)
plain.cbData=0;
}
-static void test_simpleroundtrip(const char *plaintext, int wine_fails)
+static void test_simpleroundtrip(const char *plaintext)
{
DATA_BLOB input;
DATA_BLOB encrypted;
@@ -234,17 +234,9 @@ static void test_simpleroundtrip(const char *plaintext, int wine_fails)
}
res = pCryptUnprotectData(&encrypted, NULL, NULL, NULL, NULL, 0, &output);
- if (wine_fails) {
- todo_wine
- ok(res != 0, "can't unprotect; last error %u\n", GetLastError());
- } else {
- ok(res != 0, "can't unprotect; last error %u\n", GetLastError());
- }
-
- if (res) {
- ok(output.cbData == strlen(plaintext), "output wrong length %d for input '%s', wanted %d\n", output.cbData, plaintext, strlen(plaintext));
- ok(!memcmp(plaintext, (char *)output.pbData, output.cbData), "output wrong contents for input '%s'\n", plaintext);
- }
+ ok(res != 0, "can't unprotect; last error %u\n", GetLastError());
+ ok(output.cbData == strlen(plaintext), "output wrong length %d for input '%s', wanted %d\n", output.cbData, plaintext, strlen(plaintext));
+ ok(!memcmp(plaintext, (char *)output.pbData, output.cbData), "output wrong contents for input '%s'\n", plaintext);
}
START_TEST(protectdata)
@@ -262,8 +254,8 @@ START_TEST(protectdata)
protected=FALSE;
test_cryptprotectdata();
test_cryptunprotectdata();
- test_simpleroundtrip("", 1);
- test_simpleroundtrip("hello", 0);
+ test_simpleroundtrip("");
+ test_simpleroundtrip("hello");
/* deinit globals here */
if (cipher.pbData) LocalFree(cipher.pbData);
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c
index 4f13c17..8234688 100644
--- a/dlls/rsaenh/rsaenh.c
+++ b/dlls/rsaenh/rsaenh.c
@@ -2324,7 +2324,7 @@ BOOL WINAPI RSAENH_CPDecrypt(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash,
if (Final) {
if (pbData[*pdwDataLen-1] &&
pbData[*pdwDataLen-1] <= pCryptKey->dwBlockLen &&
- pbData[*pdwDataLen-1] < *pdwDataLen) {
+ pbData[*pdwDataLen-1] <= *pdwDataLen) {
BOOL padOkay = TRUE;
/* check that every bad byte has the same value */
More information about the wine-cvs
mailing list