diff options
| author | Bob Arnson <bob@firegiant.com> | 2022-08-31 16:07:08 -0400 |
|---|---|---|
| committer | Bob Arnson <github@bobs.org> | 2022-08-31 19:59:16 -0400 |
| commit | 914a92d16d7a0245f3cf0b42cc5e320c34d23d30 (patch) | |
| tree | f145e999fc4ccefa2e92466a45b602f080a32440 /src/burn/engine | |
| parent | f6c86c939af9f8b0036f4b197512f06e861e5fd3 (diff) | |
| download | wix-914a92d16d7a0245f3cf0b42cc5e320c34d23d30.tar.gz wix-914a92d16d7a0245f3cf0b42cc5e320c34d23d30.tar.bz2 wix-914a92d16d7a0245f3cf0b42cc5e320c34d23d30.zip | |
Supply hashes to BA if present in update feed.
Fixes https://github.com/wixtoolset/issues/issues/6353.
Diffstat (limited to 'src/burn/engine')
| -rw-r--r-- | src/burn/engine/detect.cpp | 24 | ||||
| -rw-r--r-- | src/burn/engine/userexperience.cpp | 5 | ||||
| -rw-r--r-- | src/burn/engine/userexperience.h | 2 |
3 files changed, 27 insertions, 4 deletions
diff --git a/src/burn/engine/detect.cpp b/src/burn/engine/detect.cpp index 7628b26a..25d184c1 100644 --- a/src/burn/engine/detect.cpp +++ b/src/burn/engine/detect.cpp | |||
| @@ -379,6 +379,7 @@ static HRESULT DetectAtomFeedUpdate( | |||
| 379 | ATOM_FEED* pAtomFeed = NULL; | 379 | ATOM_FEED* pAtomFeed = NULL; |
| 380 | APPLICATION_UPDATE_CHAIN* pApupChain = NULL; | 380 | APPLICATION_UPDATE_CHAIN* pApupChain = NULL; |
| 381 | BOOL fStopProcessingUpdates = FALSE; | 381 | BOOL fStopProcessingUpdates = FALSE; |
| 382 | LPWSTR sczHash = NULL; | ||
| 382 | 383 | ||
| 383 | hr = AtomInitialize(); | 384 | hr = AtomInitialize(); |
| 384 | ExitOnFailure(hr, "Failed to initialize Atom."); | 385 | ExitOnFailure(hr, "Failed to initialize Atom."); |
| @@ -397,11 +398,25 @@ static HRESULT DetectAtomFeedUpdate( | |||
| 397 | for (DWORD i = 0; i < pApupChain->cEntries; ++i) | 398 | for (DWORD i = 0; i < pApupChain->cEntries; ++i) |
| 398 | { | 399 | { |
| 399 | APPLICATION_UPDATE_ENTRY* pAppUpdateEntry = &pApupChain->rgEntries[i]; | 400 | APPLICATION_UPDATE_ENTRY* pAppUpdateEntry = &pApupChain->rgEntries[i]; |
| 401 | APPLICATION_UPDATE_ENCLOSURE* pEnclosure = pAppUpdateEntry->rgEnclosures; | ||
| 400 | 402 | ||
| 401 | hr = UserExperienceOnDetectUpdate(pUX, pAppUpdateEntry->rgEnclosures ? pAppUpdateEntry->rgEnclosures->wzUrl : NULL, | 403 | if (pEnclosure) |
| 402 | pAppUpdateEntry->rgEnclosures ? pAppUpdateEntry->rgEnclosures->dw64Size : 0, | 404 | { |
| 403 | pAppUpdateEntry->pVersion, pAppUpdateEntry->wzTitle, | 405 | hr = StrAllocHexEncode(pEnclosure->rgbDigest, pEnclosure->cbDigest, &sczHash); |
| 404 | pAppUpdateEntry->wzSummary, pAppUpdateEntry->wzContentType, pAppUpdateEntry->wzContent, &fStopProcessingUpdates); | 406 | ExitOnFailure(hr, "Failed to encode hash as string."); |
| 407 | } | ||
| 408 | |||
| 409 | hr = UserExperienceOnDetectUpdate(pUX, | ||
| 410 | pEnclosure ? pEnclosure->wzUrl : NULL, | ||
| 411 | pEnclosure ? pEnclosure->dw64Size : 0, | ||
| 412 | sczHash ? sczHash : L"", | ||
| 413 | pEnclosure ? pEnclosure->digestAlgorithm == APUP_HASH_ALGORITHM_SHA512 ? BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA512 : BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE : BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE, | ||
| 414 | pAppUpdateEntry->pVersion, | ||
| 415 | pAppUpdateEntry->wzTitle, | ||
| 416 | pAppUpdateEntry->wzSummary, | ||
| 417 | pAppUpdateEntry->wzContentType, | ||
| 418 | pAppUpdateEntry->wzContent, | ||
| 419 | &fStopProcessingUpdates); | ||
| 405 | ExitOnRootFailure(hr, "BA aborted detect update."); | 420 | ExitOnRootFailure(hr, "BA aborted detect update."); |
| 406 | 421 | ||
| 407 | if (fStopProcessingUpdates) | 422 | if (fStopProcessingUpdates) |
| @@ -420,6 +435,7 @@ LExit: | |||
| 420 | ApupFreeChain(pApupChain); | 435 | ApupFreeChain(pApupChain); |
| 421 | AtomFreeFeed(pAtomFeed); | 436 | AtomFreeFeed(pAtomFeed); |
| 422 | ReleaseStr(sczUpdateFeedTempFile); | 437 | ReleaseStr(sczUpdateFeedTempFile); |
| 438 | ReleaseStr(sczHash); | ||
| 423 | AtomUninitialize(); | 439 | AtomUninitialize(); |
| 424 | 440 | ||
| 425 | return hr; | 441 | return hr; |
diff --git a/src/burn/engine/userexperience.cpp b/src/burn/engine/userexperience.cpp index 6f84caba..28429394 100644 --- a/src/burn/engine/userexperience.cpp +++ b/src/burn/engine/userexperience.cpp | |||
| @@ -1395,6 +1395,8 @@ EXTERN_C BAAPI UserExperienceOnDetectUpdate( | |||
| 1395 | __in BURN_USER_EXPERIENCE* pUserExperience, | 1395 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 1396 | __in_z_opt LPCWSTR wzUpdateLocation, | 1396 | __in_z_opt LPCWSTR wzUpdateLocation, |
| 1397 | __in DWORD64 dw64Size, | 1397 | __in DWORD64 dw64Size, |
| 1398 | __in_z_opt LPCWSTR wzHash, | ||
| 1399 | __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm, | ||
| 1398 | __in VERUTIL_VERSION* pVersion, | 1400 | __in VERUTIL_VERSION* pVersion, |
| 1399 | __in_z_opt LPCWSTR wzTitle, | 1401 | __in_z_opt LPCWSTR wzTitle, |
| 1400 | __in_z_opt LPCWSTR wzSummary, | 1402 | __in_z_opt LPCWSTR wzSummary, |
| @@ -1410,6 +1412,8 @@ EXTERN_C BAAPI UserExperienceOnDetectUpdate( | |||
| 1410 | args.cbSize = sizeof(args); | 1412 | args.cbSize = sizeof(args); |
| 1411 | args.wzUpdateLocation = wzUpdateLocation; | 1413 | args.wzUpdateLocation = wzUpdateLocation; |
| 1412 | args.dw64Size = dw64Size; | 1414 | args.dw64Size = dw64Size; |
| 1415 | args.wzHash = wzHash; | ||
| 1416 | args.hashAlgorithm = hashAlgorithm; | ||
| 1413 | args.wzVersion = pVersion->sczVersion; | 1417 | args.wzVersion = pVersion->sczVersion; |
| 1414 | args.wzTitle = wzTitle; | 1418 | args.wzTitle = wzTitle; |
| 1415 | args.wzSummary = wzSummary; | 1419 | args.wzSummary = wzSummary; |
| @@ -1426,6 +1430,7 @@ EXTERN_C BAAPI UserExperienceOnDetectUpdate( | |||
| 1426 | { | 1430 | { |
| 1427 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); | 1431 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); |
| 1428 | } | 1432 | } |
| 1433 | |||
| 1429 | *pfStopProcessingUpdates = results.fStopProcessingUpdates; | 1434 | *pfStopProcessingUpdates = results.fStopProcessingUpdates; |
| 1430 | 1435 | ||
| 1431 | LExit: | 1436 | LExit: |
diff --git a/src/burn/engine/userexperience.h b/src/burn/engine/userexperience.h index 9f183208..e342da03 100644 --- a/src/burn/engine/userexperience.h +++ b/src/burn/engine/userexperience.h | |||
| @@ -332,6 +332,8 @@ BAAPI UserExperienceOnDetectUpdate( | |||
| 332 | __in BURN_USER_EXPERIENCE* pUserExperience, | 332 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 333 | __in_z_opt LPCWSTR wzUpdateLocation, | 333 | __in_z_opt LPCWSTR wzUpdateLocation, |
| 334 | __in DWORD64 dw64Size, | 334 | __in DWORD64 dw64Size, |
| 335 | __in_z_opt LPCWSTR wzHash, | ||
| 336 | __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm, | ||
| 335 | __in VERUTIL_VERSION* pVersion, | 337 | __in VERUTIL_VERSION* pVersion, |
| 336 | __in_z_opt LPCWSTR wzTitle, | 338 | __in_z_opt LPCWSTR wzTitle, |
| 337 | __in_z_opt LPCWSTR wzSummary, | 339 | __in_z_opt LPCWSTR wzSummary, |
