Skip to content

Commit d2ba0da

Browse files
committed
Use CompareStringOrdinal() instead of CompareString() case-sensitive
This commit moves to the modern CompareStringOrdinal() for all case-sensitve uses of CompareString() with the invariant locale. Resolves 6947
1 parent 4d626c2 commit d2ba0da

34 files changed

+226
-231
lines changed

src/api/burn/balutil/balinfo.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage(
190190
// Check to see if the bundle is already in the list of packages.
191191
for (DWORD i = 0; i < pPackages->cPackages; ++i)
192192
{
193-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzId, -1, pPackages->rgPackages[i].sczId, -1))
193+
if (CSTR_EQUAL == ::CompareStringOrdinal(wzId, -1, pPackages->rgPackages[i].sczId, -1, FALSE))
194194
{
195195
ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS));
196196
}
@@ -232,7 +232,7 @@ DAPI_(HRESULT) BalInfoAddUpdateBundleAsPackage(
232232
// Check to see if the bundle is already in the list of packages.
233233
for (DWORD i = 0; i < pPackages->cPackages; ++i)
234234
{
235-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzId, -1, pPackages->rgPackages[i].sczId, -1))
235+
if (CSTR_EQUAL == ::CompareStringOrdinal(wzId, -1, pPackages->rgPackages[i].sczId, -1, FALSE))
236236
{
237237
ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS));
238238
}
@@ -270,7 +270,7 @@ DAPI_(HRESULT) BalInfoFindPackageById(
270270

271271
for (DWORD i = 0; i < pPackages->cPackages; ++i)
272272
{
273-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzId, -1, pPackages->rgPackages[i].sczId, -1))
273+
if (CSTR_EQUAL == ::CompareStringOrdinal(wzId, -1, pPackages->rgPackages[i].sczId, -1, FALSE))
274274
{
275275
*ppPackage = pPackages->rgPackages + i;
276276
break;
@@ -409,23 +409,23 @@ static HRESULT ParsePackagesFromXml(
409409
hr = XmlGetAttributeEx(pNode, L"PackageType", &scz);
410410
ExitOnRequiredXmlQueryFailure(hr, "Failed to get package type for package.");
411411

412-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, L"Bundle", -1, scz, -1))
412+
if (CSTR_EQUAL == ::CompareStringOrdinal(L"Bundle", -1, scz, -1, FALSE))
413413
{
414414
prgPackages[iPackage].type = BAL_INFO_PACKAGE_TYPE_BUNDLE_CHAIN;
415415
}
416-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, L"Exe", -1, scz, -1))
416+
else if (CSTR_EQUAL == ::CompareStringOrdinal(L"Exe", -1, scz, -1, FALSE))
417417
{
418418
prgPackages[iPackage].type = BAL_INFO_PACKAGE_TYPE_EXE;
419419
}
420-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, L"Msi", -1, scz, -1))
420+
else if (CSTR_EQUAL == ::CompareStringOrdinal(L"Msi", -1, scz, -1, FALSE))
421421
{
422422
prgPackages[iPackage].type = BAL_INFO_PACKAGE_TYPE_MSI;
423423
}
424-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, L"Msp", -1, scz, -1))
424+
else if (CSTR_EQUAL == ::CompareStringOrdinal(L"Msp", -1, scz, -1, FALSE))
425425
{
426426
prgPackages[iPackage].type = BAL_INFO_PACKAGE_TYPE_MSP;
427427
}
428-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, L"Msu", -1, scz, -1))
428+
else if (CSTR_EQUAL == ::CompareStringOrdinal(L"Msu", -1, scz, -1, FALSE))
429429
{
430430
prgPackages[iPackage].type = BAL_INFO_PACKAGE_TYPE_MSU;
431431
}
@@ -454,15 +454,15 @@ static HRESULT ParsePackagesFromXml(
454454
hr = XmlGetAttributeEx(pNode, L"Cache", &scz);
455455
ExitOnRequiredXmlQueryFailure(hr, "Failed to get cache type for package.");
456456

457-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, scz, -1, L"remove", -1))
457+
if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"remove", -1, FALSE))
458458
{
459459
prgPackages[iPackage].cacheType = BOOTSTRAPPER_CACHE_TYPE_REMOVE;
460460
}
461-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, scz, -1, L"keep", -1))
461+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"keep", -1, FALSE))
462462
{
463463
prgPackages[iPackage].cacheType = BOOTSTRAPPER_CACHE_TYPE_KEEP;
464464
}
465-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, scz, -1, L"force", -1))
465+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"force", -1, FALSE))
466466
{
467467
prgPackages[iPackage].cacheType = BOOTSTRAPPER_CACHE_TYPE_FORCE;
468468
}
@@ -522,19 +522,19 @@ static HRESULT ParseBalPackageInfoFromXml(
522522

523523
if (fXmlFound)
524524
{
525-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"default", -1))
525+
if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"default", -1, FALSE))
526526
{
527527
pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_DEFAULT;
528528
}
529-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"x86", -1))
529+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"x86", -1, FALSE))
530530
{
531531
pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_X86;
532532
}
533-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"x64", -1))
533+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"x64", -1, FALSE))
534534
{
535535
pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_X64;
536536
}
537-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"arm64", -1))
537+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"arm64", -1, FALSE))
538538
{
539539
pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_ARM64;
540540
}
@@ -611,11 +611,11 @@ static HRESULT ParseOverridableVariablesFromXml(
611611
hr = XmlGetAttributeEx(pCommandLineNode, L"VariableType", &scz);
612612
ExitOnRequiredXmlQueryFailure(hr, "Failed to get command line variable type.");
613613

614-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"caseInsensitive", -1))
614+
if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"caseInsensitive", -1, FALSE))
615615
{
616616
pOverridableVariables->commandLineType = BAL_INFO_VARIABLE_COMMAND_LINE_TYPE_CASE_INSENSITIVE;
617617
}
618-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"caseSensitive", -1))
618+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"caseSensitive", -1, FALSE))
619619
{
620620
pOverridableVariables->commandLineType = BAL_INFO_VARIABLE_COMMAND_LINE_TYPE_CASE_SENSITIVE;
621621
}

src/api/burn/balutil/balretry.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ static BOOL IsActiveRetryEntry(
211211
{
212212
BOOL fActive = FALSE;
213213

214-
fActive = vrgRetryInfo[type].sczId && CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, sczId, -1, vrgRetryInfo[type].sczId, -1);
214+
fActive = vrgRetryInfo[type].sczId && CSTR_EQUAL == ::CompareStringOrdinal(sczId, -1, vrgRetryInfo[type].sczId, -1, FALSE);
215215

216216
return fActive;
217217
}

src/api/burn/bextutil/bextutil.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ DAPI_(HRESULT) BextGetBootstrapperExtensionDataNode(
8787
hr = XmlGetAttributeEx(pixnNode, L"Id", &sczId);
8888
ExitOnRequiredXmlQueryFailure(hr, "Failed to get @Id.");
8989

90-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczId, -1, wzExtensionId, -1))
90+
if (CSTR_EQUAL == ::CompareStringOrdinal(sczId, -1, wzExtensionId, -1, FALSE))
9191
{
9292
*ppixnBootstrapperExtension = pixnNode;
9393
pixnNode = NULL;

src/burn/engine/approvedexe.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ extern "C" HRESULT ApprovedExesFindById(
129129
{
130130
pApprovedExe = &pApprovedExes->rgApprovedExes[i];
131131

132-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pApprovedExe->sczId, -1, wzId, -1))
132+
if (CSTR_EQUAL == ::CompareStringOrdinal(pApprovedExe->sczId, -1, wzId, -1, FALSE))
133133
{
134134
*ppApprovedExe = pApprovedExe;
135135
ExitFunction1(hr = S_OK);

src/burn/engine/bundlepackageengine.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ extern "C" HRESULT BundlePackageEngineParseRelatedCodes(
146146
hr = XmlGetAttributeEx(pixnElement, L"Code", &sczCode);
147147
ExitOnFailure(hr, "Failed to get @Code.");
148148

149-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Detect", -1))
149+
if (CSTR_EQUAL == ::CompareStringOrdinal(sczAction, -1, L"Detect", -1, FALSE))
150150
{
151151
hr = MemEnsureArraySizeForNewItems(reinterpret_cast<LPVOID*>(prgsczDetectCodes), *pcDetectCodes, 1, sizeof(LPWSTR), 5);
152152
ExitOnFailure(hr, "Failed to resize Detect code array");
@@ -155,7 +155,7 @@ extern "C" HRESULT BundlePackageEngineParseRelatedCodes(
155155
sczCode = NULL;
156156
*pcDetectCodes += 1;
157157
}
158-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Upgrade", -1))
158+
else if (CSTR_EQUAL == ::CompareStringOrdinal(sczAction, -1, L"Upgrade", -1, FALSE))
159159
{
160160
hr = MemEnsureArraySizeForNewItems(reinterpret_cast<LPVOID*>(prgsczUpgradeCodes), *pcUpgradeCodes, 1, sizeof(LPWSTR), 5);
161161
ExitOnFailure(hr, "Failed to resize Upgrade code array");
@@ -164,7 +164,7 @@ extern "C" HRESULT BundlePackageEngineParseRelatedCodes(
164164
sczCode = NULL;
165165
*pcUpgradeCodes += 1;
166166
}
167-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Addon", -1))
167+
else if (CSTR_EQUAL == ::CompareStringOrdinal(sczAction, -1, L"Addon", -1, FALSE))
168168
{
169169
hr = MemEnsureArraySizeForNewItems(reinterpret_cast<LPVOID*>(prgsczAddonCodes), *pcAddonCodes, 1, sizeof(LPWSTR), 5);
170170
ExitOnFailure(hr, "Failed to resize Addon code array");
@@ -173,7 +173,7 @@ extern "C" HRESULT BundlePackageEngineParseRelatedCodes(
173173
sczCode = NULL;
174174
*pcAddonCodes += 1;
175175
}
176-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Patch", -1))
176+
else if (CSTR_EQUAL == ::CompareStringOrdinal(sczAction, -1, L"Patch", -1, FALSE))
177177
{
178178
hr = MemEnsureArraySizeForNewItems(reinterpret_cast<LPVOID*>(prgsczPatchCodes), *pcPatchCodes, 1, sizeof(LPWSTR), 5);
179179
ExitOnFailure(hr, "Failed to resize Patch code array");

src/burn/engine/burnextension.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ EXTERN_C HRESULT BurnExtensionFindById(
214214
{
215215
pExtension = &pBurnExtensions->rgExtensions[i];
216216

217-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pExtension->sczId, -1, wzId, -1))
217+
if (CSTR_EQUAL == ::CompareStringOrdinal(pExtension->sczId, -1, wzId, -1, FALSE))
218218
{
219219
*ppExtension = pExtension;
220220
ExitFunction1(hr = S_OK);

src/burn/engine/burnpipe.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ static HRESULT ChildPipeConnected(
515515
ExitOnFailure(hr, "Failed to read verification secret from parent pipe.");
516516

517517
// Verify the secrets match.
518-
if (CSTR_EQUAL != ::CompareStringW(LOCALE_NEUTRAL, 0, sczVerificationSecret, -1, wzSecret, -1))
518+
if (CSTR_EQUAL != ::CompareStringOrdinal(sczVerificationSecret, -1, wzSecret, -1, FALSE))
519519
{
520520
hr = HRESULT_FROM_WIN32(ERROR_INVALID_DATA);
521521
ExitOnRootFailure(hr, "Verification secret from parent does not match.");

src/burn/engine/condition.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -928,7 +928,7 @@ static HRESULT CompareStringValues(
928928
)
929929
{
930930
HRESULT hr = S_OK;
931-
DWORD dwCompareString = (comparison & INSENSITIVE) ? NORM_IGNORECASE : 0;
931+
BOOL fIgnoreCase = (comparison & INSENSITIVE) ? TRUE : FALSE;
932932
size_t cchLeftSize = 0;
933933
size_t cchRightSize = 0;
934934
int cchLeft = 0;
@@ -958,7 +958,7 @@ static HRESULT CompareStringValues(
958958
case BURN_SYMBOL_TYPE_EQ_I:
959959
case BURN_SYMBOL_TYPE_NE_I:
960960
{
961-
int i = ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand, cchLeft, wzRightOperand, cchRight);
961+
int i = ::CompareStringOrdinal(wzLeftOperand, cchLeft, wzRightOperand, cchRight, fIgnoreCase);
962962
hr = CompareIntegerValues(comparison, i, CSTR_EQUAL, pfResult);
963963
}
964964
break;
@@ -967,7 +967,7 @@ static HRESULT CompareStringValues(
967967
// test if left string contains right string
968968
for (int i = 0; (i + cchRight) <= cchLeft; ++i)
969969
{
970-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand + i, cchRight, wzRightOperand, cchRight))
970+
if (CSTR_EQUAL == ::CompareStringOrdinal(wzLeftOperand + i, cchRight, wzRightOperand, cchRight, fIgnoreCase))
971971
{
972972
*pfResult = TRUE;
973973
ExitFunction();
@@ -978,12 +978,12 @@ static HRESULT CompareStringValues(
978978
case BURN_SYMBOL_TYPE_HIEQ:
979979
case BURN_SYMBOL_TYPE_HIEQ_I:
980980
// test if left string starts with right string
981-
*pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand, cchRight, wzRightOperand, cchRight);
981+
*pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringOrdinal(wzLeftOperand, cchRight, wzRightOperand, cchRight, fIgnoreCase);
982982
break;
983983
case BURN_SYMBOL_TYPE_LOEQ:
984984
case BURN_SYMBOL_TYPE_LOEQ_I:
985985
// test if left string ends with right string
986-
*pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand + (cchLeft - cchRight), cchRight, wzRightOperand, cchRight);
986+
*pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringOrdinal(wzLeftOperand + (cchLeft - cchRight), cchRight, wzRightOperand, cchRight, fIgnoreCase);
987987
break;
988988
default:
989989
ExitFunction1(hr = E_INVALIDARG);

src/burn/engine/container.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ extern "C" HRESULT ContainerFindById(
400400
{
401401
pContainer = &pContainers->rgContainers[i];
402402

403-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pContainer->sczId, -1, wzId, -1))
403+
if (CSTR_EQUAL == ::CompareStringOrdinal(pContainer->sczId, -1, wzId, -1, FALSE))
404404
{
405405
*ppContainer = pContainer;
406406
ExitFunction1(hr = S_OK);

src/burn/engine/exeengine.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ extern "C" HRESULT ExeEngineParsePackageFromXml(
2525
hr = XmlGetAttributeEx(pixnExePackage, L"DetectionType", &scz);
2626
ExitOnRequiredXmlQueryFailure(hr, "Failed to get @DetectionType.");
2727

28-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"condition", -1))
28+
if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"condition", -1, FALSE))
2929
{
3030
pPackage->Exe.detectionType = BURN_EXE_DETECTION_TYPE_CONDITION;
3131
}
32-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"arp", -1))
32+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"arp", -1, FALSE))
3333
{
3434
pPackage->Exe.detectionType = BURN_EXE_DETECTION_TYPE_ARP;
3535
}
36-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"none", -1))
36+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"none", -1, FALSE))
3737
{
3838
pPackage->Exe.detectionType = BURN_EXE_DETECTION_TYPE_NONE;
3939
}
@@ -114,15 +114,15 @@ extern "C" HRESULT ExeEngineParsePackageFromXml(
114114

115115
if (fFoundXml)
116116
{
117-
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"burn", -1))
117+
if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"burn", -1, FALSE))
118118
{
119119
pPackage->Exe.protocol = BURN_EXE_PROTOCOL_TYPE_BURN;
120120
}
121-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"netfx4", -1))
121+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"netfx4", -1, FALSE))
122122
{
123123
pPackage->Exe.protocol = BURN_EXE_PROTOCOL_TYPE_NETFX4;
124124
}
125-
else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"none", -1))
125+
else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"none", -1, FALSE))
126126
{
127127
pPackage->Exe.protocol = BURN_EXE_PROTOCOL_TYPE_NONE;
128128
}

0 commit comments

Comments
 (0)