Skip to content

Commit 0fa5cfe

Browse files
committed
Factor out log tag.
1 parent 9e09b5e commit 0fa5cfe

File tree

1 file changed

+23
-76
lines changed

1 file changed

+23
-76
lines changed

analytics/src/analytics_windows.cc

Lines changed: 23 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
#include "app/src/log.h"
2626

27+
#define LOG_TAG "VerifyAndLoadAnalyticsLibrary: "
28+
2729
namespace firebase {
2830
namespace analytics {
2931
namespace internal {
@@ -49,28 +51,21 @@ static std::wstring GetExecutablePath() {
4951
pgmptr_val, -1, NULL, 0);
5052
if (wide_char_count == 0) { // Failure if count is 0
5153
DWORD conversion_error = GetLastError();
52-
LogError(
53-
"VerifyAndLoadAnalyticsLibrary: Invalid executable path. Error: %u",
54-
conversion_error);
54+
LogError(LOG_TAG "Invalid executable path. Error: %u", conversion_error);
5555
return L"";
5656
}
5757

5858
std::vector<wchar_t> wide_path_buffer(wide_char_count);
5959
if (MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, pgmptr_val, -1,
6060
wide_path_buffer.data(), wide_char_count) == 0) {
6161
DWORD conversion_error = GetLastError();
62-
LogError(
63-
"VerifyAndLoadAnalyticsLibrary: Invalid executable path. Error: %u",
64-
conversion_error);
62+
LogError(LOG_TAG "Invalid executable path. Error: %u", conversion_error);
6563
return L"";
6664
}
6765
executable_path_str = wide_path_buffer.data();
6866
} else {
6967
// Both _get_wpgmptr and _get_pgmptr failed or returned empty/null
70-
LogError(
71-
"VerifyAndLoadAnalyticsLibrary: Can't determine executable "
72-
"directory. Errors: %d, %d",
73-
err_w, err_c);
68+
LogError(LOG_TAG "Can't determine executable directory. Errors: %d, %d", err_w, err_c);
7469
return L"";
7570
}
7671
}
@@ -85,10 +80,7 @@ static std::vector<BYTE> CalculateFileSha256(HANDLE hFile) {
8580

8681
if (SetFilePointer(hFile, 0, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER) {
8782
DWORD dwError = GetLastError();
88-
LogError(
89-
"VerifyAndLoadAnalyticsLibrary: CalculateFileSha256.SetFilePointer "
90-
"failed. Error: %u",
91-
dwError);
83+
LogError(LOG_TAG "CalculateFileSha256.SetFilePointer failed. Error: %u", dwError);
9284
return result_hash_value;
9385
}
9486

@@ -98,19 +90,13 @@ static std::vector<BYTE> CalculateFileSha256(HANDLE hFile) {
9890
if (!CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_AES,
9991
CRYPT_VERIFYCONTEXT)) {
10092
DWORD dwError = GetLastError();
101-
LogError(
102-
"VerifyAndLoadAnalyticsLibrary: "
103-
"CalculateFileSha256.CryptAcquireContextW failed. Error: %u",
104-
dwError);
93+
LogError(LOG_TAG "CalculateFileSha256.CryptAcquireContextW failed. Error: %u", dwError);
10594
return result_hash_value;
10695
}
10796

10897
if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)) {
10998
DWORD dwError = GetLastError();
110-
LogError(
111-
"VerifyAndLoadAnalyticsLibrary: CalculateFileSha256.CryptCreateHash "
112-
"failed. Error: %u",
113-
dwError);
99+
LogError(LOG_TAG "CalculateFileSha256.CryptCreateHash failed. Error: %u", dwError);
114100
CryptReleaseContext(hProv, 0);
115101
return result_hash_value;
116102
}
@@ -123,10 +109,7 @@ static std::vector<BYTE> CalculateFileSha256(HANDLE hFile) {
123109
bReadSuccessLoop = ReadFile(hFile, rgbFile, sizeof(rgbFile), &cbRead, NULL);
124110
if (!bReadSuccessLoop) {
125111
DWORD dwError = GetLastError();
126-
LogError(
127-
"VerifyAndLoadAnalyticsLibrary: CalculateFileSha256.ReadFile failed. "
128-
"Error: %u",
129-
dwError);
112+
LogError(LOG_TAG "CalculateFileSha256.ReadFile failed. Error: %u", dwError);
130113
CryptDestroyHash(hHash);
131114
CryptReleaseContext(hProv, 0);
132115
return result_hash_value;
@@ -136,10 +119,7 @@ static std::vector<BYTE> CalculateFileSha256(HANDLE hFile) {
136119
}
137120
if (!CryptHashData(hHash, rgbFile, cbRead, 0)) {
138121
DWORD dwError = GetLastError();
139-
LogError(
140-
"VerifyAndLoadAnalyticsLibrary: CalculateFileSha256.CryptHashData "
141-
"failed. Error: %u",
142-
dwError);
122+
LogError(LOG_TAG "CalculateFileSha256.CryptHashData failed. Error: %u", dwError);
143123
CryptDestroyHash(hHash);
144124
CryptReleaseContext(hProv, 0);
145125
return result_hash_value;
@@ -152,7 +132,7 @@ static std::vector<BYTE> CalculateFileSha256(HANDLE hFile) {
152132
0)) {
153133
DWORD dwError = GetLastError();
154134
LogError(
155-
"VerifyAndLoadAnalyticsLibrary: CalculateFileSha256.CryptGetHashParam "
135+
LOG_TAG "CalculateFileSha256.CryptGetHashParam "
156136
"(HP_HASHSIZE) failed. Error: "
157137
"%u",
158138
dwError);
@@ -165,10 +145,7 @@ static std::vector<BYTE> CalculateFileSha256(HANDLE hFile) {
165145
if (!CryptGetHashParam(hHash, HP_HASHVAL, result_hash_value.data(),
166146
&cbHashValue, 0)) {
167147
DWORD dwError = GetLastError();
168-
LogError(
169-
"VerifyAndLoadAnalyticsLibrary: CalculateFileSha256.CryptGetHashParam "
170-
"(HP_HASHVAL) failed. Error: %u",
171-
dwError);
148+
LogError(LOG_TAG "CalculateFileSha256.CryptGetHashParam (HP_HASHVAL) failed. Error: %u", dwError);
172149
result_hash_value.clear();
173150
CryptDestroyHash(hHash);
174151
CryptReleaseContext(hProv, 0);
@@ -185,7 +162,7 @@ HMODULE VerifyAndLoadAnalyticsLibrary(
185162
// filename e.g. "analytics_win.dll"
186163
const unsigned char* expected_hash, size_t expected_hash_size) {
187164
if (library_filename == nullptr || library_filename[0] == L'\0') {
188-
LogError("VerifyAndLoadAnalyticsLibrary: Invalid arguments.");
165+
LogError(LOG_TAG "Invalid arguments.");
189166
return nullptr;
190167
}
191168
if (expected_hash == nullptr || expected_hash_size == 0) {
@@ -194,32 +171,19 @@ HMODULE VerifyAndLoadAnalyticsLibrary(
194171
LOAD_LIBRARY_SEARCH_APPLICATION_DIR);
195172
}
196173

197-
std::wstring executable_path_str(_wpgmptr);
198-
199-
size_t last_slash_pos = executable_path_str.find_last_of(L"\\");
200-
if (last_slash_pos == std::wstring::npos) {
201-
LogError(
202-
"VerifyAndLoadAnalyticsLibrary: Can't determine executable directory.");
203-
return nullptr;
204-
}
205-
206174
std::wstring executable_path_str = GetExecutablePath();
207175

208176
if (executable_path_str.empty()) {
209177
// GetExecutablePath() is expected to log specific errors.
210178
// This log indicates the failure to proceed within this function.
211-
LogError(
212-
"VerifyAndLoadAnalyticsLibrary: Failed to determine executable path "
213-
"via GetExecutablePath(), cannot proceed.");
179+
LogError(LOG_TAG "Can't determine executable path.");
214180
return nullptr;
215181
}
216182

217183
size_t last_slash_pos = executable_path_str.find_last_of(L"\\");
218184
if (last_slash_pos == std::wstring::npos) {
219185
// Log message updated to avoid using %ls for executable_path_str
220-
LogError(
221-
"VerifyAndLoadAnalyticsLibrary: Could not determine executable "
222-
"directory from retrieved path (no backslash found).");
186+
LogError(LOG_TAG "Could not determine executable directory.");
223187
return nullptr;
224188
}
225189

@@ -236,10 +200,7 @@ HMODULE VerifyAndLoadAnalyticsLibrary(
236200
// logging an error. For other errors (e.g., access denied on an existing
237201
// file), log them as it's an unexpected issue.
238202
if (dwError != ERROR_FILE_NOT_FOUND && dwError != ERROR_PATH_NOT_FOUND) {
239-
LogError(
240-
"VerifyAndLoadAnalyticsLibrary: Failed to open Analytics DLL. Error: "
241-
"%u",
242-
dwError);
203+
LogError(OG_TAG "Failed to open Analytics DLL. Error: %u", dwError);
243204
}
244205
return nullptr; // In all CreateFileW failure cases, return nullptr to fall
245206
// back to stub mode.
@@ -253,10 +214,7 @@ HMODULE VerifyAndLoadAnalyticsLibrary(
253214
0xFFFFFFFF, &overlapped);
254215
if (!bFileLocked) {
255216
DWORD dwError = GetLastError();
256-
LogError(
257-
"VerifyAndLoadAnalyticsLibrary: Failed to lock Analytics DLL. Error: "
258-
"%u",
259-
dwError);
217+
LogError(LOG_TAG "Failed to lock Analytics DLL. Error: %u", dwError);
260218
CloseHandle(hFile);
261219
return nullptr;
262220
}
@@ -266,17 +224,15 @@ HMODULE VerifyAndLoadAnalyticsLibrary(
266224
std::vector<BYTE> calculated_hash = CalculateFileSha256(hFile);
267225

268226
if (calculated_hash.empty()) {
269-
LogError("VerifyAndLoadAnalyticsLibrary: Hash failed for Analytics DLL.");
227+
LogError(LOG_TAG "Hash failed for Analytics DLL.");
270228
} else {
271229
if (calculated_hash.size() != expected_hash_size) {
272230
LogError(
273-
"VerifyAndLoadAnalyticsLibrary: Hash size mismatch for Analytics "
274-
"DLL. Expected: %zu, Calculated: %zu.",
275-
expected_hash_size, calculated_hash.size());
231+
LOG_TAG "Hash size mismatch for Analytics DLL. Expected: %zu, Calculated: %zu.", expected_hash_size, calculated_hash.size());
276232
} else if (memcmp(calculated_hash.data(), expected_hash,
277233
expected_hash_size) != 0) {
278234
LogError(
279-
"VerifyAndLoadAnalyticsLibrary: Hash mismatch for Analytics DLL.");
235+
LOG_TAG "Hash mismatch for Analytics DLL.");
280236
} else {
281237
// Load the library. LOAD_LIBRARY_SEARCH_APPLICATION_DIR is a security
282238
// measure to help ensure that the DLL is loaded from the application's
@@ -288,31 +244,22 @@ HMODULE VerifyAndLoadAnalyticsLibrary(
288244
LOAD_LIBRARY_SEARCH_APPLICATION_DIR);
289245
if (hModule == NULL) {
290246
DWORD dwError = GetLastError();
291-
LogError(
292-
"VerifyAndLoadAnalyticsLibrary: Library load failed for Analytics "
293-
"DLL. Error: %u",
294-
dwError);
247+
LogError(LOG_TAG "Library load failed for Analytics DLL. Error: %u", dwError);
295248
}
296249
}
297250
}
298251

299252
if (bFileLocked) {
300253
if (!UnlockFileEx(hFile, 0, 0xFFFFFFFF, 0xFFFFFFFF, &overlapped)) {
301254
DWORD dwError = GetLastError();
302-
LogError(
303-
"VerifyAndLoadAnalyticsLibrary: Failed to unlock Analytics DLL. "
304-
"Error: %u",
305-
dwError);
255+
LogError(LOG_TAG "Failed to unlock Analytics DLL. Error: %u", dwError);
306256
}
307257
}
308258

309259
if (hFile != INVALID_HANDLE_VALUE) {
310260
if (!CloseHandle(hFile)) {
311261
DWORD dwError = GetLastError();
312-
LogError(
313-
"VerifyAndLoadAnalyticsLibrary: Failed to close Analytics DLL. "
314-
"Error: %u",
315-
dwError);
262+
LogError(LOG_TAG "Failed to close Analytics DLL. Error: %u", dwError);
316263
}
317264
}
318265
return hModule;

0 commit comments

Comments
 (0)