summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Maslenkin <mike.maslenkin@gmail.com>2023-12-14 01:33:55 +0300
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-12-27 00:09:49 +0000
commit91f1ce4e27649e8e6911a505539b137302f1b02d (patch)
treea2b23521ba7e9ba84a893fb82164ce309cbfa243
parent139887a98988e1169de64a3ac6f29cfebbf88a42 (diff)
downloadedk2-91f1ce4e27649e8e6911a505539b137302f1b02d.tar.gz
edk2-91f1ce4e27649e8e6911a505539b137302f1b02d.tar.bz2
edk2-91f1ce4e27649e8e6911a505539b137302f1b02d.zip
RedfishDiscoverDxe: handle memory allocation error conditions.
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=4625 Cc: Nickle Wang <nicklew@nvidia.com> Cc: Igor Kulchytskyy <igork@ami.com> Signed-off-by: Mike Maslenkin <mike.maslenkin@gmail.com> Reviewed-by: Abner Chang <abner.chang@amd.com>
-rw-r--r--RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c89
1 files changed, 78 insertions, 11 deletions
diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
index 0a56a68bb1..33730888a4 100644
--- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
+++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
@@ -791,38 +791,105 @@ InitInformationData (
if (RedfishLocation != NULL) {
AllocationSize = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
Information->Location = AllocatePool (AllocationSize);
- AsciiStrToUnicodeStrS (RedfishLocation, Information->Location, AllocationSize);
- DEBUG ((DEBUG_MANAGEABILITY, "Redfish service location: %s.\n", Information->Location));
+ if (Information->Location != NULL) {
+ AsciiStrToUnicodeStrS (RedfishLocation, Information->Location, AllocationSize);
+ DEBUG ((DEBUG_MANAGEABILITY, "Redfish service location: %s.\n", Information->Location));
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a: Can not allocate memory for Redfish service location: %a.\n",
+ __func__,
+ RedfishLocation
+ ));
+ }
}
if (Uuid != NULL) {
AllocationSize = AsciiStrSize (Uuid) * sizeof (CHAR16);
Information->Uuid = AllocatePool (AllocationSize);
- AsciiStrToUnicodeStrS (Uuid, Information->Uuid, AllocationSize);
- DEBUG ((DEBUG_MANAGEABILITY, "Service UUID: %s.\n", Information->Uuid));
+ if (Information->Uuid != NULL) {
+ AsciiStrToUnicodeStrS (Uuid, Information->Uuid, AllocationSize);
+ DEBUG ((DEBUG_MANAGEABILITY, "Service UUID: %s.\n", Information->Uuid));
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a: Can not allocate memory for Service UUID: %a.\n",
+ __func__,
+ Uuid
+ ));
+ }
}
if (Os != NULL) {
AllocationSize = AsciiStrSize (Os) * sizeof (CHAR16);
Information->Os = AllocatePool (AllocationSize);
- AsciiStrToUnicodeStrS (Os, Information->Os, AllocationSize);
+ if (Information->Os != NULL) {
+ AsciiStrToUnicodeStrS (Os, Information->Os, AllocationSize);
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a: Can not allocate memory for Redfish service OS: %a.\n",
+ __func__,
+ Os
+ ));
+ }
}
if (OsVer != NULL) {
AllocationSize = AsciiStrSize (OsVer) * sizeof (CHAR16);
Information->OsVersion = AllocatePool (AllocationSize);
- AsciiStrToUnicodeStrS (OsVer, Information->OsVersion, AllocationSize);
- DEBUG ((DEBUG_MANAGEABILITY, "Redfish service OS: %s, Version:%s.\n", Information->Os, Information->OsVersion));
+ if (Information->OsVersion != NULL) {
+ AsciiStrToUnicodeStrS (OsVer, Information->OsVersion, AllocationSize);
+ DEBUG ((
+ DEBUG_MANAGEABILITY,
+ "Redfish service OS: %s, Version:%s.\n",
+ Information->Os,
+ Information->OsVersion
+ ));
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a: Can not allocate memory for Redfish OS Version:%a.\n",
+ __func__,
+ OsVer
+ ));
+ }
}
- if ((Product != NULL) && (ProductVer != NULL)) {
+ if (Product != NULL) {
AllocationSize = AsciiStrSize (Product) * sizeof (CHAR16);
Information->Product = AllocatePool (AllocationSize);
- AsciiStrToUnicodeStrS (Product, Information->Product, AllocationSize);
+ if (Information->Product != NULL) {
+ AsciiStrToUnicodeStrS (Product, Information->Product, AllocationSize);
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a: Can not allocate memory for Redfish service product: %a.\n",
+ __func__,
+ Product
+ ));
+ }
+ }
+
+ if (ProductVer != NULL) {
AllocationSize = AsciiStrSize (ProductVer) * sizeof (CHAR16);
Information->ProductVer = AllocatePool (AllocationSize);
- AsciiStrToUnicodeStrS (ProductVer, Information->ProductVer, AllocationSize);
- DEBUG ((DEBUG_MANAGEABILITY, "Redfish service product: %s, Version:%s.\n", Information->Product, Information->ProductVer));
+ if (Information->ProductVer != NULL) {
+ AsciiStrToUnicodeStrS (ProductVer, Information->ProductVer, AllocationSize);
+ DEBUG ((
+ DEBUG_MANAGEABILITY,
+ "Redfish service product: %s, Version:%s.\n",
+ Information->Product,
+ Information->ProductVer
+ ));
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a: Can not allocate memory for Redfish service product Version: %a.\n",
+ __func__,
+ ProductVer
+ ));
+ }
}
}