From eecb068ac0a9f6e380c521b69a27ea43840a35dd Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 10 Mar 2017 15:34:08 +0100 Subject: [PATCH] bcrypt: Return error when requesting BCRYPT_HASH_LENGTH for unsupported object. Signed-off-by: Sebastian Lackner Signed-off-by: Alexandre Julliard --- dlls/bcrypt/bcrypt_main.c | 2 ++ dlls/bcrypt/tests/bcrypt.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c index ae646277e29..561b45957c8 100644 --- a/dlls/bcrypt/bcrypt_main.c +++ b/dlls/bcrypt/bcrypt_main.c @@ -404,6 +404,8 @@ static NTSTATUS generic_alg_property( enum alg_id id, const WCHAR *prop, UCHAR * if (!strcmpW( prop, BCRYPT_HASH_LENGTH )) { + if (!alg_props[id].hash_length) + return STATUS_NOT_SUPPORTED; *ret_size = sizeof(ULONG); if (size < sizeof(ULONG)) return STATUS_BUFFER_TOO_SMALL; diff --git a/dlls/bcrypt/tests/bcrypt.c b/dlls/bcrypt/tests/bcrypt.c index 422f2cfd340..864c2c83bdf 100644 --- a/dlls/bcrypt/tests/bcrypt.c +++ b/dlls/bcrypt/tests/bcrypt.c @@ -763,6 +763,10 @@ static void test_rng(void) ret = pBCryptGetProperty(alg, BCRYPT_OBJECT_LENGTH, (UCHAR *)&len, sizeof(len), &size, 0); ok(ret == STATUS_NOT_SUPPORTED, "got %08x\n", ret); + len = size = 0xdeadbeef; + ret = pBCryptGetProperty(alg, BCRYPT_HASH_LENGTH, (UCHAR *)&len, sizeof(len), &size, 0); + ok(ret == STATUS_NOT_SUPPORTED, "got %08x\n", ret); + test_alg_name(alg, "RNG"); memset(buf, 0, 16);