Module: wine Branch: master Commit: b402b7878063a3dbd8eda37fae9c660ec78fbf40 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b402b7878063a3dbd8eda37fae...
Author: Alexandre Julliard julliard@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 */