From: Santino Mazza mazzasantino1206@gmail.com
Signed-off-by: Santino Mazza mazzasantino1206@gmail.com Signed-off-by: Hans Leidekker hans@codeweavers.com --- dlls/ncrypt/tests/ncrypt.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/dlls/ncrypt/tests/ncrypt.c b/dlls/ncrypt/tests/ncrypt.c index 68b893282c2..01d33e93755 100644 --- a/dlls/ncrypt/tests/ncrypt.c +++ b/dlls/ncrypt/tests/ncrypt.c @@ -136,7 +136,35 @@ static void test_key_import_rsa(void) NCryptFreeObject(prov); }
+static void test_ncrypt_free_object(void) +{ + NCRYPT_PROV_HANDLE prov; + NCRYPT_KEY_HANDLE key; + SECURITY_STATUS ret; + char *buf; + + ret = NCryptOpenStorageProvider(&prov, NULL, 0); + ok(ret == ERROR_SUCCESS, "got %#lx\n", ret); + + ret = NCryptImportKey(prov, 0, BCRYPT_RSAPUBLIC_BLOB, NULL, &key, rsa_key_blob, sizeof(rsa_key_blob), 0); + ok(ret == ERROR_SUCCESS, "got %#lx\n", ret); + todo_wine { + ret = NCryptFreeObject(key); + ok(ret == ERROR_SUCCESS, "got %#lx\n", ret); + + key = 0; + ret = NCryptFreeObject(key); + ok(ret == NTE_INVALID_HANDLE, "got %#lx\n", ret); + + buf = calloc(1, 50); + ret = NCryptFreeObject((NCRYPT_KEY_HANDLE)buf); + ok(ret == NTE_INVALID_HANDLE, "got %#lx\n", ret); + free(buf); + } +} + START_TEST(ncrypt) { test_key_import_rsa(); + test_ncrypt_free_object(); }
On 16/2/22 11:13, Hans Leidekker wrote:
From: Santino Mazza mazzasantino1206@gmail.com
Signed-off-by: Santino Mazza mazzasantino1206@gmail.com Signed-off-by: Hans Leidekker hans@codeweavers.com
dlls/ncrypt/tests/ncrypt.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/dlls/ncrypt/tests/ncrypt.c b/dlls/ncrypt/tests/ncrypt.c index 68b893282c2..01d33e93755 100644 --- a/dlls/ncrypt/tests/ncrypt.c +++ b/dlls/ncrypt/tests/ncrypt.c @@ -136,7 +136,35 @@ static void test_key_import_rsa(void) NCryptFreeObject(prov); }
+static void test_ncrypt_free_object(void) +{
- NCRYPT_PROV_HANDLE prov;
- NCRYPT_KEY_HANDLE key;
- SECURITY_STATUS ret;
- char *buf;
- ret = NCryptOpenStorageProvider(&prov, NULL, 0);
- ok(ret == ERROR_SUCCESS, "got %#lx\n", ret);
- ret = NCryptImportKey(prov, 0, BCRYPT_RSAPUBLIC_BLOB, NULL, &key, rsa_key_blob, sizeof(rsa_key_blob), 0);
- ok(ret == ERROR_SUCCESS, "got %#lx\n", ret);
- todo_wine {
- ret = NCryptFreeObject(key);
- ok(ret == ERROR_SUCCESS, "got %#lx\n", ret);
- key = 0;
- ret = NCryptFreeObject(key);
- ok(ret == NTE_INVALID_HANDLE, "got %#lx\n", ret);
- buf = calloc(1, 50);
- ret = NCryptFreeObject((NCRYPT_KEY_HANDLE)buf);
- ok(ret == NTE_INVALID_HANDLE, "got %#lx\n", ret);
- free(buf);
- }
+}
- START_TEST(ncrypt) { test_key_import_rsa();
- test_ncrypt_free_object(); }
Hello Hans, what is the reason of using calloc instead of just malloc at the end of the function?
On Wed, 2022-02-16 at 14:18 -0300, Santino Mazza wrote:
- buf = calloc(1, 50);
- ret = NCryptFreeObject((NCRYPT_KEY_HANDLE)buf);
- ok(ret == NTE_INVALID_HANDLE, "got %#lx\n", ret);
- free(buf);
- }
+}
START_TEST(ncrypt) { test_key_import_rsa();
- test_ncrypt_free_object();
}
Hello Hans, what is the reason of using calloc instead of just malloc at the end of the function?
calloc() initializes the memory so this avoids the (small) risk that garbage bytes constitute a valid header, leading to a test failure or crash.
On 16/2/22 14:45, Hans Leidekker wrote:
On Wed, 2022-02-16 at 14:18 -0300, Santino Mazza wrote:
- buf = calloc(1, 50);
- ret = NCryptFreeObject((NCRYPT_KEY_HANDLE)buf);
- ok(ret == NTE_INVALID_HANDLE, "got %#lx\n", ret);
- free(buf);
- }
+}
START_TEST(ncrypt) { test_key_import_rsa();
- test_ncrypt_free_object();
}
Hello Hans, what is the reason of using calloc instead of just malloc at the end of the function?
calloc() initializes the memory so this avoids the (small) risk that garbage bytes constitute a valid header, leading to a test failure or crash.
Interesting, didn't know that. Thanks!