Alexandre Julliard : rsaenh: Fix padding bytes check for 0-byte payload.
Module: wine Branch: master Commit: b402b7878063a3dbd8eda37fae9c660ec78fbf40 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b402b7878063a3dbd8eda37fae... Author: Alexandre Julliard <julliard(a)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 */
participants (1)
-
Alexandre Julliard