From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=gNwBm/09; spf=pass (domain: linaro.org, ip: 209.85.166.196, mailfrom: ard.biesheuvel@linaro.org) Received: from mail-it1-f196.google.com (mail-it1-f196.google.com [209.85.166.196]) by groups.io with SMTP; Mon, 10 Jun 2019 11:55:17 -0700 Received: by mail-it1-f196.google.com with SMTP id k134so258891ith.1 for ; Mon, 10 Jun 2019 11:55:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Hek3yAWkvlcL/BmgTlJEGabr5rv9UsM2+iJhg2DWIOA=; b=gNwBm/09LQRlPnn+lpxwAFu9PI9MJrG3ihcxIRUExDBqedMNt+rbcRctacNyQiWV7h tneIZziICtWYBfQyhV1RjG3VCYxFOxkGpsuYmRZ9l+bIUCGW2lky6Wk0e6MhaJfWYbS4 MM52vDOxpYFkklrHMwVZnlSH9HjUQZ5292Vb/55iA4IF1dZ27aWyU3j1Xyrz3RRDbnA1 Ph99lPBxiUMBONknkJhXtDhe8UWrMDV5YIU844uf4Xb/KgxfYnJSNT9C0A7d9oALaBKp Wq1ZYgsDBBvaiNRUZgX68JKCvC+dFG2uPknna5HgW8mUAxhXC2xI9KPMNqJmtL3Xr1Cf cdTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Hek3yAWkvlcL/BmgTlJEGabr5rv9UsM2+iJhg2DWIOA=; b=JY1wVUTA3YfFAap4IkDCcQ47QB6aVYLrkg9o88Xb6FIBdgcv6mleBUvDuFB3psSWsy grvdjWzMfKixKrR14m53JrqRP6bt7YrY+SP2eeHcGvfv6lccqcRIPud7EsLhuP0XEuyr 3oMX3aTPNUUc9h6ASNmbQz7FAeyhAD2kIhILElwNz8eGnVDtcFPp5DvysjhPaYExNyli mX48UDWqZkNaLwOr++cAS+XGMQ0zzchaxZYjLpP2ZC1fyYpyxdkY7TuYocuwpoOYmSkR jn0X01sn1Sibef9HEKOgWFH0IBaAUR6wMk2hWshRrTaJ+Uep04VjlMcxNEkTWutsrSvZ Na/g== X-Gm-Message-State: APjAAAVxvR7Sw2JL8a7aClepfnkyhD49RvXWJbO5xXmqNu+1wLmN/W+U AAvy9rvBp7RXCF3FQcaA5/v4WSVUB0uhElBXFIqLmw== X-Google-Smtp-Source: APXvYqy8AVEzwEGAst8DU5ScW42XIRjVLcy1+fQf2Wlcr/KY+YFbOZuz79wV68G2YHyp2QjNUmBp+EVgwMkA8kATGYY= X-Received: by 2002:a05:660c:44a:: with SMTP id d10mr13822614itl.153.1560192916830; Mon, 10 Jun 2019 11:55:16 -0700 (PDT) MIME-Version: 1.0 References: <20190610142006.30007-1-ard.biesheuvel@linaro.org> <20190610142006.30007-6-ard.biesheuvel@linaro.org> <20190610180614.dbyijxbxdxwf3f7t@bivouac.eciton.net> In-Reply-To: <20190610180614.dbyijxbxdxwf3f7t@bivouac.eciton.net> From: "Ard Biesheuvel" Date: Mon, 10 Jun 2019 20:55:03 +0200 Message-ID: Subject: Re: [PATCH edk2-platforms 5/5] Platform/RDKQemu: stop using deprecated string conversion routines To: Leif Lindholm Cc: edk2-devel-groups-io Content-Type: text/plain; charset="UTF-8" On Mon, 10 Jun 2019 at 20:06, Leif Lindholm wrote: > > On Mon, Jun 10, 2019 at 04:20:06PM +0200, Ard Biesheuvel wrote: > > Stop using deprecated string conversion routines so we can stop > > un'#define'ing the DISABLE_NEW_DEPRECATED_INTERFACES macro in this code. > > > > Signed-off-by: Ard Biesheuvel > > --- > > Platform/Comcast/Library/RdkBootManagerLib/DiskIo.c | 12 +++++++-- > > Platform/Comcast/Library/RdkBootManagerLib/RdkFile.c | 28 +++++++++++--------- > > Platform/Comcast/RDKQemu/RDKQemu.dsc | 3 --- > > 3 files changed, 26 insertions(+), 17 deletions(-) > > > > diff --git a/Platform/Comcast/Library/RdkBootManagerLib/DiskIo.c b/Platform/Comcast/Library/RdkBootManagerLib/DiskIo.c > > index ed893bd5af6a..df16c326cc57 100644 > > --- a/Platform/Comcast/Library/RdkBootManagerLib/DiskIo.c > > +++ b/Platform/Comcast/Library/RdkBootManagerLib/DiskIo.c > > @@ -90,6 +90,7 @@ ListBlockIos ( > > UINTN NumHandles; > > UINT16 *DeviceFullPath; > > DISKIO_PARTITION_LIST *Entry; > > + RETURN_STATUS RetStatus; > > > > InitializeListHead (&mPartitionListHead); > > > > @@ -146,11 +147,13 @@ ListBlockIos ( > > > > // Copy handle and partition name > > Entry->PartitionHandle = AllHandles[LoopIndex]; > > - StrnCpy ( > > + RetStatus = StrnCpyS ( > > Entry->PartitionName, > > + PARTITION_NAME_MAX_LENGTH, > > PartitionName, > > PARTITION_NAME_MAX_LENGTH > > ); > > + ASSERT_RETURN_ERROR (RetStatus); > > Would we not want to return an error here, for non-DEBUG builds? > Actually, I think I should just change the last arg to PARTITION_NAME_MAX_LENGTH - 1, in which case no input length based error is ever returned. > > InsertTailList (&mPartitionListHead, &Entry->Link); > > break; > > } > > @@ -176,8 +179,13 @@ OpenPartition ( > > DISKIO_PARTITION_LIST *Entry; > > SPARSE_HEADER *SparseHeader; > > UINT16 UnicodePartitionName[100]; > > + RETURN_STATUS RetStatus; > > > > - AsciiStrToUnicodeStr ( PartitionName, UnicodePartitionName); > > + RetStatus = AsciiStrToUnicodeStrS (PartitionName, UnicodePartitionName, > > + sizeof (UnicodePartitionName)); > > + if (RETURN_ERROR (RetStatus)) { > > + return EFI_OUT_OF_RESOURCES; > > + } > > DEBUG((DEBUG_INFO, "Unicode partition name %s\n", UnicodePartitionName)); > > > > Status = ListBlockIos (UnicodePartitionName); > > diff --git a/Platform/Comcast/Library/RdkBootManagerLib/RdkFile.c b/Platform/Comcast/Library/RdkBootManagerLib/RdkFile.c > > index dd695651026a..6f98562eff84 100644 > > --- a/Platform/Comcast/Library/RdkBootManagerLib/RdkFile.c > > +++ b/Platform/Comcast/Library/RdkBootManagerLib/RdkFile.c > > @@ -8,8 +8,6 @@ > > > > #define MAX_VAR 6 > > > > -#define ALLOCATE_STRING_MEM(X) AllocateZeroPool((X + 1) * sizeof(CHAR16)) > > - > > /** > > * list_for_each_entry - iterate over list of given type > > * @pos: the type * to use as a loop cursor. > > @@ -53,10 +51,13 @@ SaveString ( > > IN CHAR16 *String2 > > ) > > { > > - *Dest = ALLOCATE_STRING_MEM (StrLen (String1) + StrLen (String2)); > > + UINTN StringLength; > > + > > + StringLength = StrLen (String1) + StrLen (String2) + 1; > > + *Dest = AllocatePool (StringLength * sizeof(CHAR16)); > > Minor, and just part of the shuffle, but - space after sizeof? > (At least one more below.) > Right, will fix. > > ASSERT (Dest != NULL); > > - StrCat (*Dest, String1); > > - StrCat (*Dest, String2); > > + StrCpyS (*Dest, StringLength, String1); > > + StrCatS (*Dest, StringLength, String2); > > } > > > > STATIC > > @@ -74,11 +75,13 @@ LsFiles ( > > BOOLEAN NoFile; > > CHAR16 *TempPath; > > DIR_NODE *Node; > > + UINTN StringLength; > > > > NoFile = FALSE; > > - TempPath = ALLOCATE_STRING_MEM (StrLen(DirPath) + 1); > > - StrCat (TempPath, DirPath); > > - StrCat (TempPath, L"/"); > > + StringLength = StrLen(DirPath) + 2; > > + TempPath = AllocatePool (StringLength * sizeof(CHAR16)); > > + StrCpyS (TempPath, StringLength, DirPath); > > + StrCatS (TempPath, StringLength, L"/"); > > > > Status = GetFileHandler (&FileHandle, DirPath, EFI_FILE_MODE_READ); > > ASSERT_EFI_ERROR (Status); > > @@ -192,6 +195,7 @@ InitVarList ( > > UINTN Next; > > CHAR8 *VarDelimiter[2]; > > EFI_STATUS Status; > > + UINTN StringLength; > > > > VarDelimiter[0] = "="; > > VarDelimiter[1] = "\""; > > @@ -212,10 +216,10 @@ InitVarList ( > > if (VarResult[OuterLoopIndex][InnerLoopIndex]) { > > FreePool (VarResult[OuterLoopIndex][InnerLoopIndex]); > > } > > - VarResult[OuterLoopIndex][InnerLoopIndex] = \ > > - ALLOCATE_STRING_MEM (AsciiStrLen (&FileData[Current])); > > - AsciiStrToUnicodeStr (&FileData[Current], \ > > - VarResult[OuterLoopIndex][InnerLoopIndex]); > > + StringLength = AsciiStrLen (&FileData[Current]) + 1; > > + VarResult[OuterLoopIndex][InnerLoopIndex] = AllocatePool (StringLength); > > + AsciiStrToUnicodeStrS (&FileData[Current], > > + VarResult[OuterLoopIndex][InnerLoopIndex], StringLength); > > //skip new line > > Next += 2; > > } > > diff --git a/Platform/Comcast/RDKQemu/RDKQemu.dsc b/Platform/Comcast/RDKQemu/RDKQemu.dsc > > index f0ed4f11e81d..440d2ace917c 100644 > > --- a/Platform/Comcast/RDKQemu/RDKQemu.dsc > > +++ b/Platform/Comcast/RDKQemu/RDKQemu.dsc > > @@ -418,6 +418,3 @@ [Components.AARCH64] > > > > NULL|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf > > } > > - > > -[BuildOptions] > > - GCC:*_*_*_CC_FLAGS = -UDISABLE_NEW_DEPRECATED_INTERFACES > > -- > > 2.20.1 > >