Skip to content

Commit 9311e57

Browse files
committed
Fix CodeQL errors (#490)
Fixed some CodeQL failures we're seeing in a variety of packages. This takes the changes from the PR found [here](#488) and builds upon them. - [ ] Impacts functionality? - **Functionality** - Does the change ultimately impact how firmware functions? - Examples: Add a new library, publish a new PPI, update an algorithm, ... - [x] Impacts security? - **Security** - Does the change have a direct security impact on an application, flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ... - [ ] Breaking change? - **Breaking change** - Will anyone consuming this change experience a break in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call a function in a new library class in a pre-existing module, ... - [ ] Includes tests? - **Tests** - Does the change include any explicit test code? - Examples: Unit tests, integration tests, robot tests, ... - [ ] Includes documentation? - **Documentation** - Does the change contain explicit documentation additions outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation on an a separate Web page, ... Tested through CodeQL checks. N/A
1 parent beafdae commit 9311e57

File tree

17 files changed

+254
-49
lines changed

17 files changed

+254
-49
lines changed

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c

+11-1
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,23 @@ UefiTestMain (
2626
UNIT_TEST_FRAMEWORK_HANDLE Framework;
2727

2828
DEBUG ((DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, UNIT_TEST_VERSION));
29-
CreateUnitTest (UNIT_TEST_NAME, UNIT_TEST_VERSION, &Framework);
29+
// MU_CHANGE [BEGIN] - CodeQL change
30+
Status = CreateUnitTest (UNIT_TEST_NAME, UNIT_TEST_VERSION, &Framework);
31+
if (EFI_ERROR (Status)) {
32+
DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestsfor BaseCryptLib Tests! Status = %r\n", Status));
33+
goto Done;
34+
}
35+
36+
// MU_CHANGE [END] - CodeQL change
3037

3138
//
3239
// Execute the tests.
3340
//
3441
Status = RunAllTestSuites (Framework);
3542

43+
// MU_CHANGE [BEGIN] - CodeQL change
44+
Done:
45+
// MU_CHANGE [END] - CodeQL change
3646
if (Framework) {
3747
FreeUnitTestFramework (Framework);
3848
}

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/X509Tests.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,14 @@ TestVerifyX509 (
573573
Status = X509GetIssuerName (mTestCert, sizeof (mTestCert), NULL, &SubjectSize);
574574
UT_ASSERT_TRUE (!Status);
575575
Subject = AllocatePool (SubjectSize);
576-
Status = X509GetIssuerName (mTestCert, sizeof (mTestCert), Subject, &SubjectSize);
576+
// MU_CHANGE [BEGIN] - CodeQL change
577+
if (Subject == NULL) {
578+
ASSERT (Subject != NULL);
579+
return UNIT_TEST_ERROR_TEST_FAILED;
580+
}
581+
582+
// MU_CHANGE [END] - CodeQL change
583+
Status = X509GetIssuerName (mTestCert, sizeof (mTestCert), Subject, &SubjectSize);
577584
UT_ASSERT_TRUE (Status);
578585
FreePool (Subject);
579586

MdeModulePkg/Core/Pei/Ppi/Ppi.c

+3-10
Original file line numberDiff line numberDiff line change
@@ -324,16 +324,9 @@ ConvertPpiPointersFv (
324324

325325
Guid = PrivateData->PpiData.PpiList.PpiPtrs[Index].Ppi->Guid;
326326
for (GuidIndex = 0; GuidIndex < ARRAY_SIZE (GuidCheckList); ++GuidIndex) {
327-
//
328-
// Don't use CompareGuid function here for performance reasons.
329-
// Instead we compare the GUID as INT32 at a time and branch
330-
// on the first failed comparison.
331-
//
332-
if ((((INT32 *)Guid)[0] == ((INT32 *)GuidCheckList[GuidIndex])[0]) &&
333-
(((INT32 *)Guid)[1] == ((INT32 *)GuidCheckList[GuidIndex])[1]) &&
334-
(((INT32 *)Guid)[2] == ((INT32 *)GuidCheckList[GuidIndex])[2]) &&
335-
(((INT32 *)Guid)[3] == ((INT32 *)GuidCheckList[GuidIndex])[3]))
336-
{
327+
// MU_CHANGE [BEGIN] - CodeQL change
328+
if (CompareGuid (Guid, GuidCheckList[GuidIndex]) == 0) {
329+
// MU_CHANGE [END] - CodeQL change
337330
FvInfoPpi = PrivateData->PpiData.PpiList.PpiPtrs[Index].Ppi->Ppi;
338331
DEBUG ((DEBUG_VERBOSE, " FvInfo: %p -> ", FvInfoPpi->FvInfo));
339332
if ((UINTN)FvInfoPpi->FvInfo == OrgFvHandle) {

MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c

+66-8
Original file line numberDiff line numberDiff line change
@@ -1457,6 +1457,11 @@ GetFullSmramRanges (
14571457
EFI_SMM_RESERVED_SMRAM_REGION *SmramReservedRanges;
14581458
UINTN MaxCount;
14591459
BOOLEAN Rescan;
1460+
// MU_CHANGE [BEGIN] - CodeQL change
1461+
BOOLEAN Failed;
1462+
1463+
Failed = FALSE;
1464+
// MU_CHANGE [END] - CodeQL change
14601465

14611466
//
14621467
// Get SMM Configuration Protocol if it is present.
@@ -1501,7 +1506,14 @@ GetFullSmramRanges (
15011506
*FullSmramRangeCount = SmramRangeCount + AdditionSmramRangeCount;
15021507
Size = (*FullSmramRangeCount) * sizeof (EFI_SMRAM_DESCRIPTOR);
15031508
FullSmramRanges = (EFI_SMRAM_DESCRIPTOR *)AllocateZeroPool (Size);
1504-
ASSERT (FullSmramRanges != NULL);
1509+
// MU_CHANGE [BEGIN] - CodeQL change
1510+
if (FullSmramRanges == NULL) {
1511+
ASSERT (FullSmramRanges != NULL);
1512+
Failed = TRUE;
1513+
goto Done;
1514+
}
1515+
1516+
// MU_CHANGE [END] - CodeQL change
15051517

15061518
Status = mSmmAccess->GetCapabilities (mSmmAccess, &Size, FullSmramRanges);
15071519
ASSERT_EFI_ERROR (Status);
@@ -1548,18 +1560,41 @@ GetFullSmramRanges (
15481560

15491561
Size = MaxCount * sizeof (EFI_SMM_RESERVED_SMRAM_REGION);
15501562
SmramReservedRanges = (EFI_SMM_RESERVED_SMRAM_REGION *)AllocatePool (Size);
1551-
ASSERT (SmramReservedRanges != NULL);
1563+
1564+
// MU_CHANGE [BEGIN] - CodeQL change
1565+
if (SmramReservedRanges == NULL) {
1566+
ASSERT (SmramReservedRanges != NULL);
1567+
Failed = TRUE;
1568+
goto Done;
1569+
}
1570+
1571+
// MU_CHANGE [END] - CodeQL change
1572+
15521573
for (Index = 0; Index < SmramReservedCount; Index++) {
15531574
CopyMem (&SmramReservedRanges[Index], &SmmConfiguration->SmramReservedRegions[Index], sizeof (EFI_SMM_RESERVED_SMRAM_REGION));
15541575
}
15551576

15561577
Size = MaxCount * sizeof (EFI_SMRAM_DESCRIPTOR);
15571578
TempSmramRanges = (EFI_SMRAM_DESCRIPTOR *)AllocatePool (Size);
1558-
ASSERT (TempSmramRanges != NULL);
1579+
// MU_CHANGE [BEGIN] - CodeQL change
1580+
if (TempSmramRanges == NULL) {
1581+
ASSERT (TempSmramRanges != NULL);
1582+
Failed = TRUE;
1583+
goto Done;
1584+
}
1585+
1586+
// MU_CHANGE [END] - CodeQL change
15591587
TempSmramRangeCount = 0;
15601588

15611589
SmramRanges = (EFI_SMRAM_DESCRIPTOR *)AllocatePool (Size);
1562-
ASSERT (SmramRanges != NULL);
1590+
// MU_CHANGE [BEGIN] - CodeQL change
1591+
if (SmramRanges == NULL) {
1592+
ASSERT (SmramRanges != NULL);
1593+
Failed = TRUE;
1594+
goto Done;
1595+
}
1596+
1597+
// MU_CHANGE [END] - CodeQL change
15631598
Status = mSmmAccess->GetCapabilities (mSmmAccess, &Size, SmramRanges);
15641599
ASSERT_EFI_ERROR (Status);
15651600

@@ -1616,7 +1651,14 @@ GetFullSmramRanges (
16161651
// Sort the entries
16171652
//
16181653
FullSmramRanges = AllocateZeroPool ((TempSmramRangeCount + AdditionSmramRangeCount) * sizeof (EFI_SMRAM_DESCRIPTOR));
1619-
ASSERT (FullSmramRanges != NULL);
1654+
// MU_CHANGE [BEGIN] - CodeQL change
1655+
if (FullSmramRanges == NULL) {
1656+
ASSERT (FullSmramRanges != NULL);
1657+
Failed = TRUE;
1658+
goto Done;
1659+
}
1660+
1661+
// MU_CHANGE [END] - CodeQL change
16201662
*FullSmramRangeCount = 0;
16211663
do {
16221664
for (Index = 0; Index < TempSmramRangeCount; Index++) {
@@ -1640,9 +1682,25 @@ GetFullSmramRanges (
16401682
ASSERT (*FullSmramRangeCount == TempSmramRangeCount);
16411683
*FullSmramRangeCount += AdditionSmramRangeCount;
16421684

1643-
FreePool (SmramRanges);
1644-
FreePool (SmramReservedRanges);
1645-
FreePool (TempSmramRanges);
1685+
// MU_CHANGE [BEGIN] - CodeQL change
1686+
Done:
1687+
if (SmramRanges != NULL) {
1688+
FreePool (SmramRanges);
1689+
}
1690+
1691+
if (SmramReservedRanges != NULL) {
1692+
FreePool (SmramReservedRanges);
1693+
}
1694+
1695+
if (TempSmramRanges != NULL) {
1696+
FreePool (TempSmramRanges);
1697+
}
1698+
1699+
if (Failed) {
1700+
return NULL;
1701+
}
1702+
1703+
// MU_CHANGE [END] - CodeQL change
16461704

16471705
return FullSmramRanges;
16481706
}

MdeModulePkg/Universal/SetupBrowserDxe/Expression.c

+34-3
Original file line numberDiff line numberDiff line change
@@ -1173,6 +1173,14 @@ IfrToString (
11731173
} else {
11741174
SrcBuf = GetBufferForValue (&Value);
11751175
SrcLen = GetLengthForValue (&Value);
1176+
// MU_CHANGE [BEGIN] - CodeQL change
1177+
if ((SrcBuf == NULL) || (SrcLen == 0)) {
1178+
ASSERT (SrcBuf != NULL);
1179+
ASSERT (SrcLen != 0);
1180+
return EFI_NOT_FOUND;
1181+
}
1182+
1183+
// MU_CHANGE [END] - CodeQL change
11761184
}
11771185

11781186
TmpBuf = AllocateZeroPool (SrcLen + 3);
@@ -1183,6 +1191,7 @@ IfrToString (
11831191
}
11841192

11851193
// MU_CHANGE [END] - CodeQL change
1194+
11861195
if (Format == EFI_IFR_STRING_ASCII) {
11871196
CopyMem (TmpBuf, SrcBuf, SrcLen);
11881197
PrintFormat = L"%a";
@@ -1292,7 +1301,8 @@ IfrToUint (
12921301
Evaluate opcode EFI_IFR_CATENATE.
12931302
12941303
@param FormSet Formset which contains this opcode.
1295-
@param Result Evaluation result for this opcode.
1304+
@param Result Evaluation result for this opcode. Result
1305+
will be NULL on a failure.
12961306
12971307
@retval EFI_SUCCESS Opcode evaluation success.
12981308
@retval Other Opcode evaluation failed.
@@ -1377,10 +1387,24 @@ IfrCatenate (
13771387
ASSERT (Result->Buffer != NULL);
13781388

13791389
TmpBuf = GetBufferForValue (&Value[0]);
1380-
ASSERT (TmpBuf != NULL);
1390+
// MU_CHANGE [BEGIN] - CodeQL change
1391+
if (TmpBuf == NULL) {
1392+
ASSERT (TmpBuf != NULL);
1393+
Status = EFI_OUT_OF_RESOURCES;
1394+
goto Done;
1395+
}
1396+
1397+
// MU_CHANGE [END] - CodeQL change
13811398
CopyMem (Result->Buffer, TmpBuf, Length0);
13821399
TmpBuf = GetBufferForValue (&Value[1]);
1383-
ASSERT (TmpBuf != NULL);
1400+
// MU_CHANGE [BEGIN] - CodeQL change
1401+
if (TmpBuf == NULL) {
1402+
ASSERT (TmpBuf != NULL);
1403+
Status = EFI_OUT_OF_RESOURCES;
1404+
goto Done;
1405+
}
1406+
1407+
// MU_CHANGE [END] - CodeQL change
13841408
CopyMem (&Result->Buffer[Length0], TmpBuf, Length1);
13851409
}
13861410

@@ -1405,6 +1429,13 @@ IfrCatenate (
14051429
FreePool (StringPtr);
14061430
}
14071431

1432+
// MU_CHANGE [BEGIN] - CodeQL change
1433+
if (EFI_ERROR (Status) && (Result != NULL)) {
1434+
FreePool (Result);
1435+
}
1436+
1437+
// MU_CHANGE [END] - CodeQL change
1438+
14081439
return Status;
14091440
}
14101441

NetworkPkg/Ip4Dxe/Ip4Input.c

+7-1
Original file line numberDiff line numberDiff line change
@@ -1318,7 +1318,13 @@ Ip4InstanceDeliverPacket (
13181318
// may be not continuous before the data.
13191319
//
13201320
Head = NetbufAllocSpace (Dup, IP4_MAX_HEADLEN, NET_BUF_HEAD);
1321-
ASSERT (Head != NULL);
1321+
// MU_CHANGE [BEGIN] - CodeQL change
1322+
if (Head == NULL) {
1323+
ASSERT (Head != NULL);
1324+
return EFI_OUT_OF_RESOURCES;
1325+
}
1326+
1327+
// MU_CHANGE [END] - CodeQL change
13221328

13231329
Dup->Ip.Ip4 = (IP4_HEAD *)Head;
13241330

NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c

+17-10
Original file line numberDiff line numberDiff line change
@@ -864,19 +864,26 @@ Ip6ManualAddrDadCallback (
864864
// data with those passed.
865865
//
866866
PassedAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)AllocatePool (Item->DataSize);
867-
ASSERT (PassedAddr != NULL);
868-
869-
Item->Data.Ptr = PassedAddr;
870-
Item->Status = EFI_SUCCESS;
871-
872-
while (!NetMapIsEmpty (&Instance->DadPassedMap)) {
873-
ManualAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)NetMapRemoveHead (&Instance->DadPassedMap, NULL);
874-
CopyMem (PassedAddr, ManualAddr, sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS));
867+
// MU_CHANGE [BEGIN] - CodeQL change
868+
if (PassedAddr == NULL) {
869+
ASSERT (PassedAddr != NULL);
870+
Item->Data.Ptr = NULL;
871+
Item->Status = EFI_OUT_OF_RESOURCES;
872+
} else {
873+
Item->Data.Ptr = PassedAddr;
874+
Item->Status = EFI_SUCCESS;
875+
876+
while (!NetMapIsEmpty (&Instance->DadPassedMap)) {
877+
ManualAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)NetMapRemoveHead (&Instance->DadPassedMap, NULL);
878+
CopyMem (PassedAddr, ManualAddr, sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS));
879+
880+
PassedAddr++;
881+
}
875882

876-
PassedAddr++;
883+
ASSERT ((UINTN)PassedAddr - (UINTN)Item->Data.Ptr == Item->DataSize);
877884
}
878885

879-
ASSERT ((UINTN)PassedAddr - (UINTN)Item->Data.Ptr == Item->DataSize);
886+
// MU_CHANGE [END] - CodeQL change
880887
}
881888
} else {
882889
//

NetworkPkg/Ip6Dxe/Ip6Input.c

+7-1
Original file line numberDiff line numberDiff line change
@@ -1522,7 +1522,13 @@ Ip6InstanceDeliverPacket (
15221522
// may be not continuous before the data.
15231523
//
15241524
Head = NetbufAllocSpace (Dup, sizeof (EFI_IP6_HEADER), NET_BUF_HEAD);
1525-
ASSERT (Head != NULL);
1525+
// MU_CHANGE [BEGIN] - CodeQL change
1526+
if (Head == NULL) {
1527+
ASSERT (Head != NULL);
1528+
return EFI_OUT_OF_RESOURCES;
1529+
}
1530+
1531+
// MU_CHANGE [END] - CodeQL change
15261532
Dup->Ip.Ip6 = (EFI_IP6_HEADER *)Head;
15271533

15281534
CopyMem (Head, Packet->Ip.Ip6, sizeof (EFI_IP6_HEADER));

NetworkPkg/Ip6Dxe/Ip6Nd.c

+7-1
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,13 @@ Ip6SendNeighborSolicit (
14451445
IcmpHead->Head.Code = 0;
14461446

14471447
Target = (EFI_IPv6_ADDRESS *)NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE);
1448-
ASSERT (Target != NULL);
1448+
// MU_CHANGE [BEGIN] - CodeQL change
1449+
if (Target == NULL) {
1450+
ASSERT (Target != NULL);
1451+
return EFI_OUT_OF_RESOURCES;
1452+
}
1453+
1454+
// MU_CHANGE [END] - CodeQL change
14491455
IP6_COPY_ADDRESS (Target, TargetIp6Address);
14501456

14511457
LinkLayerOption = NULL;

NetworkPkg/Ip6Dxe/Ip6Output.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,14 @@ Ip6Output (
866866
// Allocate the space to contain the fragmentable hdrs and copy the data.
867867
//
868868
Buf = NetbufAllocSpace (TmpPacket, FragmentHdrsLen, TRUE);
869-
ASSERT (Buf != NULL);
869+
// MU_CHANGE [BEGIN] - CodeQL change
870+
if (Buf == NULL) {
871+
ASSERT (Buf != NULL);
872+
Status = EFI_OUT_OF_RESOURCES;
873+
goto Error;
874+
}
875+
876+
// MU_CHANGE [END] - CodeQL change
870877
CopyMem (Buf, ExtHdrs + UnFragmentHdrsLen, FragmentHdrsLen);
871878

872879
//

NetworkPkg/Library/DxeNetLib/NetBuffer.c

+7
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,13 @@ NetbufDuplicate (
303303
NetbufReserve (Duplicate, HeadSpace);
304304

305305
Dst = NetbufAllocSpace (Duplicate, Nbuf->TotalSize, NET_BUF_TAIL);
306+
// MU_CHANGE [BEGIN] - CodeQL change
307+
if (Dst == NULL) {
308+
ASSERT (Dst != NULL);
309+
return NULL;
310+
}
311+
312+
// MU_CHANGE [END] - CodeQL change
306313
NetbufCopy (Nbuf, 0, Nbuf->TotalSize, Dst);
307314

308315
return Duplicate;

0 commit comments

Comments
 (0)