[PATCH] bcrypt/tests: Correctly check the size in BCryptGetProperty.

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Tue Feb 27 22:15:55 CST 2018


From: Sebastian Lackner <sebastian at fds-team.de>

Updated to make the test pass.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/bcrypt/bcrypt_main.c  | 2 +-
 dlls/bcrypt/tests/bcrypt.c | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 72b5df2..28cf2d8 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -532,7 +532,7 @@ static NTSTATUS get_alg_property( enum alg_id id, const WCHAR *prop, UCHAR *buf,
         }
         if (!strcmpW( prop, BCRYPT_CHAINING_MODE ))
         {
-            if (size >= sizeof(BCRYPT_CHAIN_MODE_CBC))
+            if (size >= sizeof(BCRYPT_CHAIN_MODE_CBC) * sizeof(WCHAR))
             {
                 memcpy(buf, BCRYPT_CHAIN_MODE_CBC, sizeof(BCRYPT_CHAIN_MODE_CBC));
                 *ret_size = sizeof(BCRYPT_CHAIN_MODE_CBC) * sizeof(WCHAR);
diff --git a/dlls/bcrypt/tests/bcrypt.c b/dlls/bcrypt/tests/bcrypt.c
index 6fa04b0..b716688 100644
--- a/dlls/bcrypt/tests/bcrypt.c
+++ b/dlls/bcrypt/tests/bcrypt.c
@@ -452,6 +452,12 @@ static void test_aes(void)
     ok(size == 64, "got %u\n", size);
 
     size = 0;
+    ret = pBCryptGetProperty(alg, BCRYPT_CHAINING_MODE, mode, sizeof(mode) - 1, &size, 0);
+    ok(ret == STATUS_BUFFER_TOO_SMALL, "got %08x\n", ret);
+    ok(size == 64, "got %u\n", size);
+
+    size = 0;
+    memset(mode, 0, sizeof(mode));
     ret = pBCryptGetProperty(alg, BCRYPT_CHAINING_MODE, mode, sizeof(mode), &size, 0);
     ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
     ok(!lstrcmpW((const WCHAR *)mode, BCRYPT_CHAIN_MODE_CBC), "got %s\n", mode);
-- 
1.9.1




More information about the wine-devel mailing list