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 @@
     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 @@
     }
 
     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 @@
     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 @@
         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 */
