From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x22d.google.com (mail-wm0-x22d.google.com [IPv6:2a00:1450:400c:c09::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9471B81D66 for ; Fri, 28 Oct 2016 03:45:01 -0700 (PDT) Received: by mail-wm0-x22d.google.com with SMTP id p190so779172wmp.1 for ; Fri, 28 Oct 2016 03:45:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=56SOdQOkodLXLKMH5mSy/kd4189BNm68C3RaKkNs2/s=; b=Sg9U6UyikdJXuwkgbL094sQR5nAlMtj9qBxocNyUlbcPgh+vvOW2dax4g3xg+v19UT TgdZ898oxtSGI0QvMUff3yluWl82SNvH2NPjLwqU8/D5g3v0mBUF+iI8iEror553iNml sUYGH0WQj9JSHuLbgG3cC98q9+9Wa7KSyZmc8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=56SOdQOkodLXLKMH5mSy/kd4189BNm68C3RaKkNs2/s=; b=Miv1p3PV8zRL+RXKSya2ggsMr1GuBpN+uZQ8TGCqlYmaKo6o+zPkXC2La6+clZqXYz uGI7/xIoo8jRE78zbaD5pRksSKXDJx4Nsqm/3kFnlcplyH54wSc9JUw2yWPjPL91ZjiY sba9epDAowhEVokBy9hogOzWjPdrecCAv3SvUXkBtlrqnkQss5pvOjwIK0goNGwqZ8l+ b7UkTryrzR1yLxZV1cvkLttsYNAysCg272uce9yebpqj7554h22l9HdJLPzk0FSb7/y6 kHyjl1oAl2jyFVxfPnG6II03rvIRSJcksqp0BjCtvYiW0E01mdSy9tYJvWdvFX7er8vG l2BA== X-Gm-Message-State: ABUngveksS1wv4jR3FAnYT7Ik7ZGYmNp55TU5PP5vrMjzSjpNH0GzsJHKOB/RDGnX/Yy/nq3 X-Received: by 10.194.85.193 with SMTP id j1mr10919152wjz.23.1477651500598; Fri, 28 Oct 2016 03:45:00 -0700 (PDT) Received: from localhost.localdomain ([105.150.227.229]) by smtp.gmail.com with ESMTPSA id 184sm57730wms.4.2016.10.28.03.44.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 28 Oct 2016 03:44:59 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org, leif.lindholm@linaro.org Cc: lersek@redhat.com, ryan.harkin@linaro.org, Ard Biesheuvel Date: Fri, 28 Oct 2016 11:44:36 +0100 Message-Id: <1477651478-16830-8-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477651478-16830-1-git-send-email-ard.biesheuvel@linaro.org> References: <1477651478-16830-1-git-send-email-ard.biesheuvel@linaro.org> Subject: [PATCH v2 7/9] EmbeddedPkg/EfiFileLib: eliminate deprecated string function calls X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Oct 2016 10:45:01 -0000 Get rid of calls to unsafe string functions. These are deprecated and may be removed in the future. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Laszlo Ersek --- EmbeddedPkg/Library/EfiFileLib/EfiFileLib.c | 42 +++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/EmbeddedPkg/Library/EfiFileLib/EfiFileLib.c b/EmbeddedPkg/Library/EfiFileLib/EfiFileLib.c index 4d58c830861c..d3b65aa5a3e0 100644 --- a/EmbeddedPkg/Library/EfiFileLib/EfiFileLib.c +++ b/EmbeddedPkg/Library/EfiFileLib/EfiFileLib.c @@ -384,9 +384,9 @@ EblFileDevicePath ( if ( *FileName != 0 ) { - AsciiStrToUnicodeStr (FileName, UnicodeFileName); + AsciiStrToUnicodeStrS (FileName, UnicodeFileName, MAX_PATHNAME); } else { - AsciiStrToUnicodeStr ("\\", UnicodeFileName); + AsciiStrToUnicodeStrS ("\\", UnicodeFileName, MAX_PATHNAME); } Size = StrSize (UnicodeFileName); @@ -589,7 +589,7 @@ EblFvFileDevicePath ( &AuthenticationStatus ); if (!EFI_ERROR (Status)) { - UnicodeStrToAsciiStr (Section, AsciiSection); + UnicodeStrToAsciiStrS (Section, AsciiSection, MAX_PATHNAME); if (AsciiStriCmp (FileName, AsciiSection) == 0) { FreePool (Section); break; @@ -674,6 +674,7 @@ EfiOpen ( CHAR8 *CwdPlusPathName; UINTN Index; EFI_SECTION_TYPE ModifiedSectionType; + UINTN AsciiLength; EblUpdateDeviceLists (); @@ -706,7 +707,8 @@ EfiOpen ( } // We could add a current working directory concept - CwdPlusPathName = AllocatePool (AsciiStrSize (gCwd) + AsciiStrSize (PathName)); + AsciiLength = AsciiStrSize (gCwd) + AsciiStrSize (PathName); + CwdPlusPathName = AllocatePool (AsciiLength); if (CwdPlusPathName == NULL) { return NULL; } @@ -723,14 +725,14 @@ EfiOpen ( } } } else { - AsciiStrCpy (CwdPlusPathName, gCwd); + AsciiStrCpyS (CwdPlusPathName, AsciiLength, gCwd); StrLen = AsciiStrLen (gCwd); if ((*PathName != '/') && (*PathName != '\\') && (gCwd[StrLen-1] != '/') && (gCwd[StrLen-1] != '\\')) { - AsciiStrCat (CwdPlusPathName, "\\"); + AsciiStrCatS (CwdPlusPathName, AsciiLength, "\\"); } } - AsciiStrCat (CwdPlusPathName, PathName); + AsciiStrCatS (CwdPlusPathName, AsciiLength, PathName); if (AsciiStrStr (CwdPlusPathName, ":") == NULL) { // Extra error check to make sure we don't recurse and blow stack return NULL; @@ -745,7 +747,7 @@ EfiOpen ( } File->DeviceName = AllocatePool (StrLen); - AsciiStrCpy (File->DeviceName, PathName); + AsciiStrCpyS (File->DeviceName, StrLen, PathName); File->DeviceName[FileStart - 1] = '\0'; File->FileName = &File->DeviceName[FileStart]; if (File->FileName[0] == '\0') { @@ -1611,7 +1613,7 @@ ExpandPath ( { CHAR8 *NewPath; CHAR8 *Work, *Start, *End; - UINTN StrLen; + UINTN StrLen, AllocLen; INTN i; if (Cwd == NULL || Path == NULL) { @@ -1625,11 +1627,12 @@ ExpandPath ( } StrLen = AsciiStrSize (Path); - NewPath = AllocatePool (AsciiStrSize (Cwd) + StrLen + 1); + AllocLen = AsciiStrSize (Cwd) + StrLen + 1; + NewPath = AllocatePool (AllocLen); if (NewPath == NULL) { return NULL; } - AsciiStrCpy (NewPath, Cwd); + AsciiStrCpyS (NewPath, AllocLen, Cwd); End = Path + StrLen; for (Start = Path ;;) { @@ -1640,7 +1643,7 @@ ExpandPath ( } // append path prior to .. - AsciiStrnCat (NewPath, Start, Work - Start); + AsciiStrnCatS (NewPath, AllocLen, Start, Work - Start); StrLen = AsciiStrLen (NewPath); for (i = StrLen; i >= 0; i--) { if (NewPath[i] == ':') { @@ -1663,7 +1666,7 @@ ExpandPath ( } // Handle the path that remains after the .. - AsciiStrnCat (NewPath, Start, End - Start); + AsciiStrnCatS (NewPath, AllocLen, Start, End - Start); return NewPath; } @@ -1686,7 +1689,7 @@ EfiSetCwd ( ) { EFI_OPEN_FILE *File; - UINTN Len; + UINTN Len, AllocLen; CHAR8 *Path; if (Cwd == NULL) { @@ -1729,17 +1732,18 @@ EfiSetCwd ( // Use the info returned from EfiOpen as it can add in CWD if needed. So Cwd could be // relative to the current gCwd or not. - gCwd = AllocatePool (AsciiStrSize (File->DeviceName) + AsciiStrSize (File->FileName) + 10); + AllocLen = AsciiStrSize (File->DeviceName) + AsciiStrSize (File->FileName) + 10; + gCwd = AllocatePool (AllocLen); if (gCwd == NULL) { return EFI_INVALID_PARAMETER; } - AsciiStrCpy (gCwd, File->DeviceName); + AsciiStrCpyS (gCwd, AllocLen, File->DeviceName); if (File->FileName == NULL) { - AsciiStrCat (gCwd, ":\\"); + AsciiStrCatS (gCwd, AllocLen, ":\\"); } else { - AsciiStrCat (gCwd, ":"); - AsciiStrCat (gCwd, File->FileName); + AsciiStrCatS (gCwd, AllocLen, ":"); + AsciiStrCatS (gCwd, AllocLen, File->FileName); } -- 2.7.4