From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 1E886740039 for ; Fri, 22 Mar 2024 10:08:22 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=BMHyoKOMXN0c1u/98C3PkDIs0G4jXJ4zhCPChi74jls=; c=relaxed/simple; d=groups.io; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:To:Cc:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding; s=20240206; t=1711102101; v=1; b=BkStPyWdsoJxWCUn7fLYwJTlgavqCpua0n2eiZddLlul6gVNmjdzQ+O87HllDMD7ubZOpoPE BxGNa56cadRfglDzEgrZGrDTKogl/tdW9lGsZGe5D8zXPaYZISs2voZNEZoPM3U00+/8UH+lJm4 dhpLUPOlqYYgSrrSy9DIrc6tfnzhgc1XTqfMFD3TILYJahkuhr7TydNma5YzbV6jjTsyTTNBoYU LuadwxBI4LaK7BQkwPGGYSKC/42TKDhgr5+X6njE5y3fPCqvklklLCS26tfo2jNEB1db4nApHqc FAhWR3mdwWEni8JRiwJIhEV5nROVEG+OJRR14qooYSWig== X-Received: by 127.0.0.2 with SMTP id sv2cYY7687511xthJ3L3RL1C; Fri, 22 Mar 2024 03:08:21 -0700 X-Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by mx.groups.io with SMTP id smtpd.web11.9661.1711102100608526098 for ; Fri, 22 Mar 2024 03:08:21 -0700 X-Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-512e39226efso1504860e87.0 for ; Fri, 22 Mar 2024 03:08:20 -0700 (PDT) X-Gm-Message-State: 46gyyT6XWW6lOvSIkRBuyiJQx7686176AA= X-Google-Smtp-Source: AGHT+IEOBSMRiEziEKpWx3qQuFQusQvOR/E2wfO8q4diGKA+Xmt49LgVTMCxL2mN81QcWFs6OMqnywhRG27pYgeXzGM= X-Received: by 2002:a19:9155:0:b0:513:a88b:3296 with SMTP id y21-20020a199155000000b00513a88b3296mr1012882lfj.9.1711102098408; Fri, 22 Mar 2024 03:08:18 -0700 (PDT) MIME-Version: 1.0 References: <20240322090959.237-1-abner.chang@amd.com> <295BA3E2-90F6-456B-95D0-75393D77F13D@gmail.com> In-Reply-To: From: "Mike Maslenkin" Date: Fri, 22 Mar 2024 13:07:41 +0300 Message-ID: Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH V3 1/2] RedfishClientPkg: Set SettingsObject URI as the config language To: "Chang, Abner" Cc: "devel@edk2.groups.io" , Igor Kulchytskyy , Nickle Wang Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Fri, 22 Mar 2024 03:08:21 -0700 Reply-To: devel@edk2.groups.io,mike.maslenkin@gmail.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=BkStPyWd; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Hi Abner, Sorry if I wasn't clear. I meant in this function including the success path. RedfishSetRedfishUri->..->NewConfigLangMapRecord() creates a copy of this string, so it should be freed in this function. Regards, Mike. On Fri, Mar 22, 2024 at 12:58=E2=80=AFPM Chang, Abner = wrote: > > [AMD Official Use Only - General] > > Hi Mike, > Thanks for catching this, V4 sent. > > Abner > > > -----Original Message----- > > From: M M > > Sent: Friday, March 22, 2024 5:20 PM > > To: devel@edk2.groups.io; Chang, Abner > > Cc: Igor Kulchytskyy ; Nickle Wang > > Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH V3 1/2] > > RedfishClientPkg: Set SettingsObject URI as the config language > > > > Caution: This message originated from an External Source. Use proper ca= ution > > when opening attachments, clicking links, or responding. > > > > > > Hi Abner, > > > > > On 22. 3. 2024., at 12:09, Chang, Abner via groups.io > > wrote: > > > > > > From: Abner Chang > > > > > > Set SettingsObject URI in @Redfish.Settings resource as the config > > > language which is the same as the config language of parent URI > > > that mandates @Redfish.Settings. > > > With this, we can find the config language of the properties in > > > SettingsObject URI. > > > > > > Signed-off-by: Abner Chang > > > Cc: Igor Kulchytskyy > > > Co-authored-by: Nickle Wang > > > --- > > > .../Library/RedfishFeatureUtilityLib.h | 17 ++++ > > > .../RedfishFeatureUtilityLib.c | 86 ++++++++++++++++--= - > > > .../RedfishConfigLangMapDxe.c | 15 +++- > > > 3 files changed, 101 insertions(+), 17 deletions(-) > > > > > > diff --git a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLi= b.h > > b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > > > index ba9ea01501..3c5f248eb7 100644 > > > --- a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > > > +++ b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > > > @@ -369,6 +369,23 @@ RedfishSetRedfishUri ( > > > IN EFI_STRING Uri > > > ); > > > > > > +/** > > > + > > > + Save Redfish SettingsObject URI in database for further use. > > > + > > > + @param[in] ParentUri Parent URI of @Redfish.Settings pr= operty. > > > + @param[in] SettingObjectUri Redfish SettingsObject Uri to save= . > > > + > > > + @retval EFI_INVALID_PARAMETER SystemId is NULL or EMPTY > > > + @retval EFI_SUCCESS Redfish uri is saved > > > + > > > +**/ > > > +EFI_STATUS > > > +SetRedfishSettingsObjectsUri ( > > > + IN EFI_STRING ParentUri, > > > + IN EFI_STRING SettingObjectUri > > > + ); > > > + > > > /** > > > > > > Get the property name by given Configure Language. > > > diff --git > > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib. > > c > > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib. > > c > > > index cc2b37b796..c37bf85310 100644 > > > --- > > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib. > > c > > > +++ > > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib. > > c > > > @@ -2082,7 +2082,6 @@ GetConfigureLang ( > > > EFI_STRING ResultStr; > > > EFI_STRING UnicodeUri; > > > EFI_STATUS Status; > > > - EFI_STRING StrFound; > > > > > > if (IS_EMPTY_STRING (Uri)) { > > > return NULL; > > > @@ -2101,18 +2100,6 @@ GetConfigureLang ( > > > } > > > > > > ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); > > > - if (ConfigLang =3D=3D NULL) { > > > - // > > > - // @Redfish.Settings share the same schema as its parent. > > > - // Remove "Settings" and try again. > > > - // > > > - StrFound =3D StrStr (UnicodeUri, L"/Settings"); > > > - if (StrFound !=3D NULL) { > > > - StrFound[0] =3D L'\0'; > > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI, t= ry: > > %s\n", __func__, UnicodeUri)); > > > - ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); > > > - } > > > - } > > > > > > FreePool (UnicodeUri); > > > > > > @@ -2172,6 +2159,61 @@ RedfishSetRedfishUri ( > > > return mConfigLangMapProtocol->Set (mConfigLangMapProtocol, > > ConfigLang, Uri); > > > } > > > > > > +/** > > > + > > > + Save Redfish SettingsObject URI in database for further use. > > > + > > > + @param[in] ParentUri Parent URI of @Redfish.Settings pr= operty. > > > + @param[in] SettingObjectUri Redfish SettingsObject Uri to save= . > > > + > > > + @retval EFI_INVALID_PARAMETER ParentUri or SettingObjectUri is N= ULL. > > > + @retval EFI_NOT_FOUND Config language for ParentUri is n= ot found. > > > + @retval EFI_SUCCESS Redfish URI is saved with correspo= nding > > > + config language. > > > + > > > +**/ > > > +EFI_STATUS > > > +SetRedfishSettingsObjectsUri ( > > > + IN EFI_STRING ParentUri, > > > + IN EFI_STRING SettingObjectUri > > > + ) > > > +{ > > > + EFI_STATUS Status; > > > + EFI_STRING ConfigLang; > > > + > > > + if ((ParentUri =3D=3D NULL) || (SettingObjectUri =3D=3D NULL)) { > > > + return EFI_INVALID_PARAMETER; > > > + } > > > + > > > + // > > > + // Check if the SettingsObject URI already in the database. > > > + // > > > + ConfigLang =3D RedfishGetConfigLanguage (SettingObjectUri); > > > + if (ConfigLang =3D=3D NULL) { > > > + // > > > + // No config language of SettingsObject URI is found. > > > + // Get the config language of parent URI because the data model = of > > > + // SettingsObject URI resource is the same as the data model of = parent > > URI. > > > + // > > > + ConfigLang =3D RedfishGetConfigLanguage (ParentUri); > > > + if (ConfigLang =3D=3D NULL) { > > > + DEBUG ((DEBUG_ERROR, "%a: Failed to get the config language of > > parent URI that mandates SettingsObject - %s.\n", __func__, ParentUri))= ; > > > + return EFI_NOT_FOUND; > > > + } > > > + > > > + // Set the config language of settings URI using parent's URI co= nfig > > language. > > > + Status =3D RedfishSetRedfishUri (ConfigLang, SettingObjectUri); > > > + if (EFI_ERROR (Status)) { > > > + DEBUG ((DEBUG_ERROR, "%a: Fails to set the config language of > > SettingsObject - %s.\n", __func__, SettingObjectUri)); > > > > looks like there is ConfigLang leak in this function. > > > > > + return Status; > > > + } > > > + > > > + DEBUG ((DEBUG_INFO, "%a: Set the config language of SettingsObje= ct - > > %s: SUCCESS.\n", __func__, SettingObjectUri)); > > > + } > > > + > > > + return EFI_SUCCESS; > > > +} > > > + > > > /** > > > > > > Get @odata.id from give HTTP payload. It's call responsibility to r= elease > > returned buffer. > > > @@ -3532,6 +3574,7 @@ CompareRedfishBooleanArrayValues ( > > > payload and URI to pending settings. Caller has to release "Setting= Payload" > > and > > > "SettingUri". > > > > > > + @param[in] RedfishService Instance of REDFISH_SERVICE > > > @param[in] Payload Payload that may contain "@Redfish.Sett= ings" > > > @param[out] SettingPayload Payload keeps pending settings. > > > @param[out] SettingUri URI to pending settings. > > > @@ -3552,6 +3595,7 @@ GetPendingSettings ( > > > EDKII_JSON_VALUE JsonValue; > > > UINTN Index; > > > EFI_STATUS Status; > > > + EFI_STRING StrFound; > > > > > > if ((RedfishService =3D=3D NULL) || (Payload =3D=3D NULL) || (Setti= ngResponse =3D=3D > > NULL) || (SettingUri =3D=3D NULL)) { > > > return EFI_INVALID_PARAMETER; > > > @@ -3586,6 +3630,22 @@ GetPendingSettings ( > > > return Status; > > > } > > > > > > + // > > > + // Setting URI exists, check if settings URI is valid or not. > > > + // > > > + StrFound =3D StrStr (*SettingUri, L"/Settings"); > > > + if (StrFound !=3D NULL) { > > > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI: > > %s\n", __func__, *SettingUri)); > > > + } else { > > > + StrFound =3D StrStr (*SettingUri, L"/SD"); > > > + if (StrFound !=3D NULL) { > > > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"SD\" found in URI: %s\n"= , > > __func__, *SettingUri)); > > > + } else { > > > + DEBUG ((DEBUG_ERROR, "%a: Not an valid @redfish.settings URI= \n", > > __func__, *SettingUri)); > > > + ASSERT (FALSE); > > > + } > > > + } > > > + > > > return EFI_SUCCESS; > > > } > > > > > > diff --git > > a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > > index 8c93044580..4071e30c17 100644 > > > --- > > a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > > +++ > > b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > > @@ -2,6 +2,7 @@ > > > > > > (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> > > Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All right= s > > reserved. > > > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserve= d.
> > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > @@ -606,10 +607,16 @@ RedfishConfigLangMapSet ( > > > Status =3D EFI_NOT_FOUND; > > > Target =3D FindConfigLangMapRecord (&Private->ConfigLangList.ListHe= ader, > > ConfigLang, FALSE); > > > if (Target !=3D NULL) { > > > - // > > > - // Remove old one and create new one. > > > - // > > > - Status =3D DeleteConfigLangMapRecord (&Private->ConfigLangList, = Target); > > > + if (Uri !=3D NULL) { > > > + if (StrCmp (Uri, Target->Uri) =3D=3D 0) { > > > + return EFI_SUCCESS; > > > + } > > > + } else { > > > + // > > > + // Remove old one and create new one. > > > + // > > > + Status =3D DeleteConfigLangMapRecord (&Private->ConfigLangList= , > > Target); > > > + } > > > } > > > > > > // > > > -- > > > 2.37.1.windows.1 > > > > Regards, > > Mike. -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117045): https://edk2.groups.io/g/devel/message/117045 Mute This Topic: https://groups.io/mt/105081867/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-