Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/imagehlp/tests/Makefile.in | 1 +
dlls/imagehlp/tests/image.c | 67 +++++--------------------
dlls/imagehlp/tests/integrity.c | 88 +++++++++------------------------
3 files changed, 35 insertions(+), 121 deletions(-)
diff --git a/dlls/imagehlp/tests/Makefile.in b/dlls/imagehlp/tests/Makefile.in
index 6c784401e99..43b434f690a 100644
--- a/dlls/imagehlp/tests/Makefile.in
+++ b/dlls/imagehlp/tests/Makefile.in
@@ -1,4 +1,5 @@
TESTDLL = imagehlp.dll
+IMPORTS = imagehlp psapi
C_SRCS = \
image.c \
diff --git a/dlls/imagehlp/tests/image.c b/dlls/imagehlp/tests/image.c
index 875d919bb75..c8d1a520c96 100644
--- a/dlls/imagehlp/tests/image.c
+++ b/dlls/imagehlp/tests/image.c
@@ -28,16 +28,6 @@
#include "wine/test.h"
-static HMODULE hImageHlp;
-
-static BOOL (WINAPI *pImageGetDigestStream)(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE);
-static BOOL (WINAPI *pBindImageEx)(DWORD Flags, const char *ImageName, const char *DllPath,
- const char *SymbolPath, PIMAGEHLP_STATUS_ROUTINE StatusRoutine);
-static DWORD (WINAPI *pGetImageUnusedHeaderBytes)(PLOADED_IMAGE, LPDWORD);
-static PLOADED_IMAGE (WINAPI *pImageLoad)(PCSTR, PCSTR);
-static BOOL (WINAPI *pImageUnload)(PLOADED_IMAGE);
-
-
/* minimal PE file image */
#define VA_START 0x400000
#define FILE_PE_START 0x50
@@ -322,13 +312,8 @@ static void test_get_digest_stream(void)
DWORD count;
struct update_accum accum = { 0, NULL };
- if (!pImageGetDigestStream)
- {
- win_skip("ImageGetDigestStream function is not available\n");
- return;
- }
SetLastError(0xdeadbeef);
- ret = pImageGetDigestStream(NULL, 0, NULL, NULL);
+ ret = ImageGetDigestStream(NULL, 0, NULL, NULL);
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER,
"expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
file = create_temp_file(temp_file);
@@ -338,16 +323,16 @@ static void test_get_digest_stream(void)
return;
}
SetLastError(0xdeadbeef);
- ret = pImageGetDigestStream(file, 0, NULL, NULL);
+ ret = ImageGetDigestStream(file, 0, NULL, NULL);
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER,
"expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
SetLastError(0xdeadbeef);
- ret = pImageGetDigestStream(NULL, 0, accumulating_stream_output, &accum);
+ ret = ImageGetDigestStream(NULL, 0, accumulating_stream_output, &accum);
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER,
"expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
/* Even with "valid" parameters, it fails with an empty file */
SetLastError(0xdeadbeef);
- ret = pImageGetDigestStream(file, 0, accumulating_stream_output, &accum);
+ ret = ImageGetDigestStream(file, 0, accumulating_stream_output, &accum);
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER,
"expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
/* Finally, with a valid executable in the file, it succeeds. Note that
@@ -362,11 +347,11 @@ static void test_get_digest_stream(void)
bin.nt_headers.OptionalHeader.SizeOfInitializedData = 0;
bin.nt_headers.OptionalHeader.SizeOfImage = 0;
- ret = pImageGetDigestStream(file, 0, accumulating_stream_output, &accum);
+ ret = ImageGetDigestStream(file, 0, accumulating_stream_output, &accum);
ok(ret, "ImageGetDigestStream failed: %d\n", GetLastError());
check_updates("flags = 0", &a1, &accum);
free_updates(&accum);
- ret = pImageGetDigestStream(file, CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO,
+ ret = ImageGetDigestStream(file, CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO,
accumulating_stream_output, &accum);
ok(ret, "ImageGetDigestStream failed: %d\n", GetLastError());
check_updates("flags = CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO", &a2, &accum);
@@ -382,15 +367,9 @@ static void test_bind_image_ex(void)
char temp_file[MAX_PATH];
DWORD count;
- if (!pBindImageEx)
- {
- win_skip("BindImageEx function is not available\n");
- return;
- }
-
/* call with a non-existent file */
SetLastError(0xdeadbeef);
- ret = pBindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, "nonexistent.dll", 0, 0,
+ ret = BindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, "nonexistent.dll", 0, 0,
testing_status_routine);
todo_wine ok(!ret && ((GetLastError() == ERROR_FILE_NOT_FOUND) ||
(GetLastError() == ERROR_INVALID_PARAMETER)),
@@ -408,12 +387,12 @@ static void test_bind_image_ex(void)
CloseHandle(file);
/* call with a proper PE file, but with StatusRoutine set to NULL */
- ret = pBindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, temp_file, 0, 0,
+ ret = BindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, temp_file, 0, 0,
NULL);
ok(ret, "BindImageEx failed: %d\n", GetLastError());
/* call with a proper PE file and StatusRoutine */
- ret = pBindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, temp_file, 0, 0,
+ ret = BindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, temp_file, 0, 0,
testing_status_routine);
ok(ret, "BindImageEx failed: %d\n", GetLastError());
@@ -436,12 +415,6 @@ static void test_image_load(void)
DWORD ret, count;
HANDLE file;
- if (!pImageLoad || !pImageUnload || !pGetImageUnusedHeaderBytes)
- {
- win_skip("ImageLoad functions are not available\n");
- return;
- }
-
file = create_temp_file(temp_file);
if (file == INVALID_HANDLE_VALUE)
{
@@ -452,7 +425,7 @@ static void test_image_load(void)
WriteFile(file, &bin, sizeof(bin), &count, NULL);
CloseHandle(file);
- img = pImageLoad(temp_file, NULL);
+ img = ImageLoad(temp_file, NULL);
ok(img != NULL, "ImageLoad unexpectedly failed\n");
if (img)
@@ -499,13 +472,13 @@ static void test_image_load(void)
"unexpected SizeOfImage, got 0x%x instead of 0x600\n", img->SizeOfImage);
count = 0xdeadbeef;
- ret = pGetImageUnusedHeaderBytes(img, &count);
+ ret = GetImageUnusedHeaderBytes(img, &count);
todo_wine
ok(ret == 448, "GetImageUnusedHeaderBytes returned %u instead of 448\n", ret);
todo_wine
ok(count == 64, "unexpected size for unused header bytes, got %u instead of 64\n", count);
- pImageUnload(img);
+ ImageUnload(img);
}
DeleteFileA(temp_file);
@@ -513,23 +486,7 @@ static void test_image_load(void)
START_TEST(image)
{
- hImageHlp = LoadLibraryA("imagehlp.dll");
-
- if (!hImageHlp)
- {
- win_skip("ImageHlp unavailable\n");
- return;
- }
-
- pImageGetDigestStream = (void *) GetProcAddress(hImageHlp, "ImageGetDigestStream");
- pBindImageEx = (void *) GetProcAddress(hImageHlp, "BindImageEx");
- pGetImageUnusedHeaderBytes = (void *) GetProcAddress(hImageHlp, "GetImageUnusedHeaderBytes");
- pImageLoad = (void *) GetProcAddress(hImageHlp, "ImageLoad");
- pImageUnload = (void *) GetProcAddress(hImageHlp, "ImageUnload");
-
test_get_digest_stream();
test_bind_image_ex();
test_image_load();
-
- FreeLibrary(hImageHlp);
}
diff --git a/dlls/imagehlp/tests/integrity.c b/dlls/imagehlp/tests/integrity.c
index 3b85c6a3a29..6d820fa0b1d 100644
--- a/dlls/imagehlp/tests/integrity.c
+++ b/dlls/imagehlp/tests/integrity.c
@@ -26,20 +26,12 @@
#include "winerror.h"
#include "winnt.h"
#include "imagehlp.h"
+#define PSAPI_VERSION 1
#include "psapi.h"
-static HMODULE hImageHlp, hPsapi, hNtdll;
+static HMODULE hNtdll;
static char test_dll_path[MAX_PATH];
-static BOOL (WINAPI *pImageAddCertificate)(HANDLE, LPWIN_CERTIFICATE, PDWORD);
-static BOOL (WINAPI *pImageEnumerateCertificates)(HANDLE, WORD, PDWORD, PDWORD, DWORD);
-static BOOL (WINAPI *pImageGetCertificateData)(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD);
-static BOOL (WINAPI *pImageGetCertificateHeader)(HANDLE, DWORD, LPWIN_CERTIFICATE);
-static BOOL (WINAPI *pImageRemoveCertificate)(HANDLE, DWORD);
-static PIMAGE_NT_HEADERS (WINAPI *pCheckSumMappedFile)(PVOID, DWORD, PDWORD, PDWORD);
-
-static BOOL (WINAPI *pGetModuleInformation)(HANDLE, HMODULE, LPMODULEINFO, DWORD);
-
static PIMAGE_NT_HEADERS (WINAPI *pRtlImageNtHeader)(PVOID);
static const char test_cert_data[] =
@@ -193,7 +185,7 @@ static DWORD test_add_certificate(const char *cert_data, int len)
cert->wCertificateType = WIN_CERT_TYPE_PKCS_SIGNED_DATA;
CopyMemory(cert->bCertificate, cert_data, len);
- ret = pImageAddCertificate(hFile, cert, &index);
+ ret = ImageAddCertificate(hFile, cert, &index);
ok(ret, "Unable to add certificate to image, error %x\n", GetLastError());
trace("added cert index %d\n", index);
@@ -218,7 +210,7 @@ static void test_get_certificate(const char *cert_data, int index)
return;
}
- ret = pImageGetCertificateData(hFile, index, NULL, &cert_len);
+ ret = ImageGetCertificateData(hFile, index, NULL, &cert_len);
err = GetLastError();
ok ((ret == FALSE) && (err == ERROR_INSUFFICIENT_BUFFER), "ImageGetCertificateData gave unexpected result; ret=%d / err=%x\n", ret, err);
@@ -232,7 +224,7 @@ static void test_get_certificate(const char *cert_data, int index)
return;
}
- ret = pImageGetCertificateData(hFile, index, cert, &cert_len);
+ ret = ImageGetCertificateData(hFile, index, cert, &cert_len);
ok(ret, "Unable to retrieve certificate; err=%x\n", GetLastError());
ok(memcmp(cert->bCertificate, cert_data, cert_len - sizeof(WIN_CERTIFICATE)) == 0, "Certificate retrieved did not match original\n");
@@ -254,13 +246,13 @@ static void test_remove_certificate(int index)
return;
}
- ret = pImageEnumerateCertificates(hFile, CERT_SECTION_TYPE_ANY, &orig_count, NULL, 0);
+ ret = ImageEnumerateCertificates(hFile, CERT_SECTION_TYPE_ANY, &orig_count, NULL, 0);
ok (ret, "Unable to enumerate certificates in file; err=%x\n", GetLastError());
- ret = pImageRemoveCertificate(hFile, index);
+ ret = ImageRemoveCertificate(hFile, index);
ok (ret, "Unable to remove certificate from file; err=%x\n", GetLastError());
/* Test to see if the certificate has actually been removed */
- pImageEnumerateCertificates(hFile, CERT_SECTION_TYPE_ANY, &count, NULL, 0);
+ ImageEnumerateCertificates(hFile, CERT_SECTION_TYPE_ANY, &count, NULL, 0);
ok (count == orig_count - 1, "Certificate count mismatch; orig=%d new=%d\n", orig_count, count);
CloseHandle(hFile);
@@ -275,20 +267,14 @@ static void test_pe_checksum(void)
char buffer[20];
BOOL ret_bool;
- if (!pCheckSumMappedFile)
- {
- win_skip("CheckSumMappedFile not supported, skipping tests\n");
- return;
- }
-
SetLastError(0xdeadbeef);
- ret = pCheckSumMappedFile(NULL, 0, &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(NULL, 0, &checksum_orig, &checksum_new);
ok(!ret, "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok(((GetLastError() == ERROR_INVALID_PARAMETER)||(GetLastError() == 0xdeadbeef)),
"Expected 0xdeadbeef (XP) or ERROR_INVALID_PARAMETER (Vista+), got %x\n", GetLastError());
SetLastError(0xdeadbeef);
- ret = pCheckSumMappedFile((void *)0xdeadbeef, 0, &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile((void *)0xdeadbeef, 0, &checksum_orig, &checksum_new);
ok(!ret, "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok(((GetLastError() == ERROR_INVALID_PARAMETER)||(GetLastError() == 0xdeadbeef)),
"Expected 0xdeadbeef (XP) or ERROR_INVALID_PARAMETER (Vista+), got %x\n", GetLastError());
@@ -296,53 +282,47 @@ static void test_pe_checksum(void)
/* basic checksum tests */
memset(buffer, 0x11, sizeof(buffer));
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(buffer, sizeof(buffer), &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(buffer, sizeof(buffer), &checksum_orig, &checksum_new);
ok(ret == NULL, "Expected NULL, got %p\n", ret);
todo_wine ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig);
todo_wine ok(checksum_new == 0xaabe, "Expected 0xaabe, got %x\n", checksum_new);
memset(buffer, 0x22, sizeof(buffer));
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(buffer, sizeof(buffer), &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(buffer, sizeof(buffer), &checksum_orig, &checksum_new);
ok(ret == NULL, "Expected NULL, got %p\n", ret);
todo_wine ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig);
todo_wine ok(checksum_new == 0x5569, "Expected 0x5569, got %x\n", checksum_new);
memset(buffer, 0x22, sizeof(buffer));
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(buffer, 10, &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(buffer, 10, &checksum_orig, &checksum_new);
ok(ret == NULL, "Expected NULL, got %p\n", ret);
todo_wine ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig);
todo_wine ok(checksum_new == 0xaab4, "Expected 0xaab4, got %x\n", checksum_new);
memset(buffer, 0x22, sizeof(buffer));
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(buffer, 11, &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(buffer, 11, &checksum_orig, &checksum_new);
ok(ret == NULL, "Expected NULL, got %p\n", ret);
todo_wine ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig);
todo_wine ok(checksum_new == 0xaad7, "Expected 0xaad7, got %x\n", checksum_new);
/* test checksum of PE module */
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(test_pe_executable, sizeof(test_pe_executable),
+ ret = CheckSumMappedFile(test_pe_executable, sizeof(test_pe_executable),
&checksum_orig, &checksum_new);
ok((char *)ret == test_pe_executable + 0x80, "Expected %p, got %p\n", test_pe_executable + 0x80, ret);
ok(checksum_orig == 0xabcdef11, "Expected 0xabcdef11, got %x\n", checksum_orig);
ok(checksum_new == 0xaa4, "Expected 0xaa4, got %x\n", checksum_new);
- if (!pGetModuleInformation)
- {
- win_skip("GetModuleInformation not supported, skipping tests\n");
- return;
- }
-
- ret_bool = pGetModuleInformation(GetCurrentProcess(), GetModuleHandleA(NULL),
+ ret_bool = GetModuleInformation(GetCurrentProcess(), GetModuleHandleA(NULL),
&modinfo, sizeof(modinfo));
ok(ret_bool, "GetModuleInformation failed, error: %x\n", GetLastError());
SetLastError(0xdeadbeef);
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, modinfo.SizeOfImage, &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(modinfo.lpBaseOfDll, modinfo.SizeOfImage, &checksum_orig, &checksum_new);
ok(ret != NULL, "Expected CheckSumMappedFile to succeed\n");
ok(GetLastError() == 0xdeadbeef, "Expected err=0xdeadbeef, got %x\n", GetLastError());
ok(checksum_orig != 0xdeadbeef, "Expected orig checksum != 0xdeadbeef\n");
@@ -350,7 +330,7 @@ static void test_pe_checksum(void)
SetLastError(0xdeadbeef);
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 100, modinfo.SizeOfImage - 100,
+ ret = CheckSumMappedFile((char *)modinfo.lpBaseOfDll + 100, modinfo.SizeOfImage - 100,
&checksum_orig, &checksum_new);
ok(!ret, "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok(GetLastError() == 0xdeadbeef, "Expected err=0xdeadbeef, got %x\n", GetLastError());
@@ -361,27 +341,27 @@ static void test_pe_checksum(void)
checksum_correct = nt_header->OptionalHeader.CheckSum;
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, (char *)nt_header - (char *)modinfo.lpBaseOfDll,
+ ret = CheckSumMappedFile(modinfo.lpBaseOfDll, (char *)nt_header - (char *)modinfo.lpBaseOfDll,
&checksum_orig, &checksum_new);
ok(!ret || (ret == nt_header), "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok((checksum_orig == 0) || (checksum_orig == checksum_correct), "Expected %x, got %x\n", checksum_correct, checksum_orig);
ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new);
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, sizeof(IMAGE_DOS_HEADER),
+ ret = CheckSumMappedFile(modinfo.lpBaseOfDll, sizeof(IMAGE_DOS_HEADER),
&checksum_orig, &checksum_new);
ok(!ret || (ret == nt_header), "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok((checksum_orig == 0) || (checksum_orig == checksum_correct), "Expected %x, got %x\n", checksum_correct, checksum_orig);
ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new);
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new);
+ ret = CheckSumMappedFile(modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new);
ok(!ret || (ret == nt_header), "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok((checksum_orig == 0xdeadbeef) || (checksum_orig == checksum_correct), "Expected %x, got %x\n", checksum_correct, checksum_orig);
ok((checksum_new == 0xdeadbeef) || (checksum_new != 0 && checksum_new != 0xdeadbeef), "Got unexpected value %x\n", checksum_new);
checksum_orig = checksum_new = 0xdeadbeef;
- ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 1, 0,
+ ret = CheckSumMappedFile((char *)modinfo.lpBaseOfDll + 1, 0,
&checksum_orig, &checksum_new);
ok(ret == NULL, "Expected NULL, got %p\n", ret);
ok((checksum_orig == 0) || (checksum_orig == 0xdeadbeef), "Expected 0, got %x\n", checksum_orig);
@@ -392,33 +372,11 @@ START_TEST(integrity)
{
DWORD file_size, file_size_orig, first, second;
- hImageHlp = LoadLibraryA("imagehlp.dll");
-
- if (!hImageHlp)
- {
- win_skip("ImageHlp unavailable\n");
- return;
- }
-
if (!copy_dll_file())
- {
- FreeLibrary(hImageHlp);
return;
- }
file_size_orig = get_file_size();
- pImageAddCertificate = (void *) GetProcAddress(hImageHlp, "ImageAddCertificate");
- pImageEnumerateCertificates = (void *) GetProcAddress(hImageHlp, "ImageEnumerateCertificates");
- pImageGetCertificateData = (void *) GetProcAddress(hImageHlp, "ImageGetCertificateData");
- pImageGetCertificateHeader = (void *) GetProcAddress(hImageHlp, "ImageGetCertificateHeader");
- pImageRemoveCertificate = (void *) GetProcAddress(hImageHlp, "ImageRemoveCertificate");
- pCheckSumMappedFile = (void *) GetProcAddress(hImageHlp, "CheckSumMappedFile");
-
- hPsapi = LoadLibraryA("psapi.dll");
- if (hPsapi)
- pGetModuleInformation = (void *) GetProcAddress(hPsapi, "GetModuleInformation");
-
hNtdll = LoadLibraryA("ntdll.dll");
if (hNtdll)
pRtlImageNtHeader = (void *) GetProcAddress(hNtdll, "RtlImageNtHeader");
@@ -450,8 +408,6 @@ START_TEST(integrity)
test_pe_checksum();
- if (hPsapi) FreeLibrary(hPsapi);
if (hNtdll) FreeLibrary(hNtdll);
- FreeLibrary(hImageHlp);
DeleteFileA(test_dll_path);
}
--
2.20.1