From 6d9f1641a550cce0d3a5a2db9e329d95f92e74fb Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Thu, 11 Jan 2024 08:11:54 -0500 Subject: [PATCH] Add missing library header guards (#181) ## Description All header files should include header guards. Some header files, such as those which define structures, cannot be included more than once within a translation unit, as doing so would cause a redefinition error. Such headers must be guarded to prevent ill-effects from multiple inclusion. Similarly, if header files include other header files, and this inclusion graph contains a cycle, then at least one file within the cycle must contain header guards in order to break the cycle. Because of cases like these, all headers should be guarded as a matter of good practice, even if they do not strictly need to be. Furthermore, most modern compilers contain optimizations which are triggered by header guards. If the header guard strictly conforms to the pattern that compilers expect, then inclusions of that header other than the first have absolutely no effect: the file isn't re-read from disk, nor is it re-tokenised or re-preprocessed. This can result in a noticeable, albeit minor, improvement to compilation time. - [ ] Impacts functionality? - **Functionality** - Does the change ultimately impact how firmware functions? - Examples: Add a new library, publish a new PPI, update an algorithm, ... - [ ] 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, ... ## How This Was Tested - Compilation - CodeQL ## Integration Instructions N/A Signed-off-by: Michael Kubacki --- DfciPkg/Include/Library/DfciAssetTagSettingLib.h | 5 +++++ DfciPkg/Include/Library/DfciGroupLib.h | 5 +++++ DfciPkg/Include/Library/DfciSettingChangedNotificationLib.h | 5 +++++ DfciPkg/Include/Library/DfciV1SupportLib.h | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/DfciPkg/Include/Library/DfciAssetTagSettingLib.h b/DfciPkg/Include/Library/DfciAssetTagSettingLib.h index aaa670bb..7fe3ea20 100644 --- a/DfciPkg/Include/Library/DfciAssetTagSettingLib.h +++ b/DfciPkg/Include/Library/DfciAssetTagSettingLib.h @@ -8,6 +8,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ +#ifndef DFCI_ASSET_TAG_SETTING_LIB_H_ +#define DFCI_ASSET_TAG_SETTING_LIB_H_ + /** * Settings Provider AssetTagGet routine for pre SettingsManager access. * @@ -25,3 +28,5 @@ DfciGetAssetTag ( IN OUT UINTN *ValueSize, OUT VOID *Value ); + +#endif diff --git a/DfciPkg/Include/Library/DfciGroupLib.h b/DfciPkg/Include/Library/DfciGroupLib.h index f238874d..f1a7dba9 100644 --- a/DfciPkg/Include/Library/DfciGroupLib.h +++ b/DfciPkg/Include/Library/DfciGroupLib.h @@ -8,6 +8,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ +#ifndef DFCI_GROUP_LIB_H_ +#define DFCI_GROUP_LIB_H_ + typedef struct { DFCI_SETTING_ID_STRING GroupId; // Pointer to Group Id DFCI_SETTING_ID_STRING *GroupMembers; // Pointer to array of Setting Id's @@ -26,3 +29,5 @@ EFIAPI DfciGetGroupEntries ( VOID ); + +#endif diff --git a/DfciPkg/Include/Library/DfciSettingChangedNotificationLib.h b/DfciPkg/Include/Library/DfciSettingChangedNotificationLib.h index 6b357bdc..a654737f 100644 --- a/DfciPkg/Include/Library/DfciSettingChangedNotificationLib.h +++ b/DfciPkg/Include/Library/DfciSettingChangedNotificationLib.h @@ -8,6 +8,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ +#ifndef DFCI_SETTING_CHANGED_NOTIFICATION_LIB_H_ +#define DFCI_SETTING_CHANGED_NOTIFICATION_LIB_H_ + /** * Process Setting Changed - Called for any setting that has changed. Not called when a setting * has not changed. The setting value is also supplied. @@ -48,3 +51,5 @@ EFIAPI DfciSettingChangedResetNotification ( VOID ); + +#endif diff --git a/DfciPkg/Include/Library/DfciV1SupportLib.h b/DfciPkg/Include/Library/DfciV1SupportLib.h index 6d939914..9e81544f 100644 --- a/DfciPkg/Include/Library/DfciV1SupportLib.h +++ b/DfciPkg/Include/Library/DfciV1SupportLib.h @@ -8,6 +8,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ +#ifndef DFCI_V1_SUPPORT_LIB_H_ +#define DFCI_V1_SUPPORT_LIB_H_ + /** * Return V2 string from V1 Id String * @@ -49,3 +52,5 @@ EFIAPI DfciV1NumberFromId ( DFCI_SETTING_ID_STRING Id ); + +#endif