public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Star Zeng <star.zeng@intel.com>
To: edk2-devel@lists.01.org
Cc: Star Zeng <star.zeng@intel.com>,
	Liming Gao <liming.gao@intel.com>, Ruiyu Ni <ruiyu.ni@intel.com>
Subject: [PATCH V2 3/3] DuetPkg FsVariable: Update GetNextVariableName to follow UEFI 2.7
Date: Fri, 23 Jun 2017 16:08:10 +0800	[thread overview]
Message-ID: <1498205290-157888-4-git-send-email-star.zeng@intel.com> (raw)
In-Reply-To: <1498205290-157888-1-git-send-email-star.zeng@intel.com>

"The size must be large enough to fit input string supplied in
VariableName buffer" is added in the description for VariableNameSize.
And two cases of EFI_INVALID_PARAMETER are added.
1. The input values of VariableName and VendorGuid are not a name and
   GUID of an existing variable.
2. Null-terminator is not found in the first VariableNameSize bytes of
   the input VariableName buffer.

This patch is to update code to follow them.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
---
 DuetPkg/FSVariable/FSVariable.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/DuetPkg/FSVariable/FSVariable.c b/DuetPkg/FSVariable/FSVariable.c
index 34b79305c871..6069cfa8fb98 100644
--- a/DuetPkg/FSVariable/FSVariable.c
+++ b/DuetPkg/FSVariable/FSVariable.c
@@ -6,7 +6,7 @@ disk. They can be changed by user. BIOS is not able to protoect those.
 Duet trusts all meta data from disk. If variable code, variable metadata and variable
 data is modified in inproper way, the behavior is undefined.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
 which accompanies this distribution.  The full text of the license may be found at
@@ -1400,14 +1400,33 @@ Returns:
   VARIABLE_POINTER_TRACK  Variable;
   UINTN                   VarNameSize;
   EFI_STATUS              Status;
+  UINTN                   MaxLen;
 
   if (VariableNameSize == NULL || VariableName == NULL || VendorGuid == NULL) {
     return EFI_INVALID_PARAMETER;
   }
 
+  //
+  // Calculate the possible maximum length of name string, including the Null terminator.
+  //
+  MaxLen = *VariableNameSize / sizeof (CHAR16);
+  if ((MaxLen == 0) ||
+      ((VariableName[MaxLen - 1] != 0) && (StrnLenS (VariableName, MaxLen) == MaxLen))) {
+    //
+    // Null-terminator is not found in the first VariableNameSize bytes of the input VariableName buffer.
+    //
+    return EFI_INVALID_PARAMETER;
+  }
+
   Status = FindVariable (VariableName, VendorGuid, &Variable);
 
   if (Variable.CurrPtr == NULL || EFI_ERROR (Status)) {
+    if (VariableName[0] != 0) {
+      //
+      // The input values of VariableName and VendorGuid are not a name and GUID of an existing variable.
+      //
+      Status = EFI_INVALID_PARAMETER;
+    }
     return Status;
   }
 
-- 
2.7.0.windows.1



  parent reply	other threads:[~2017-06-23  8:06 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-23  8:08 [PATCH V2 0/3] Update comments and code for GetNextVariableName to follow UEFI 2.7 Star Zeng
2017-06-23  8:08 ` [PATCH V2 1/3] MdePkg: Update comments " Star Zeng
2017-06-23  8:08 ` [PATCH V2 2/3] MdeModulePkg Variable: Update " Star Zeng
2017-06-23  8:08 ` Star Zeng [this message]
2017-06-23  8:20   ` [PATCH V2 3/3] DuetPkg FsVariable: " Ni, Ruiyu
2017-06-23  9:33     ` Zeng, Star
2017-06-24  2:07       ` Ni, Ruiyu
2017-06-26  3:04         ` Zeng, Star
2017-06-26  5:36           ` Ni, Ruiyu
2017-06-26  5:41             ` Zeng, Star
2017-06-26  5:46               ` Ni, Ruiyu
2017-06-26  5:52                 ` Zeng, Star
2017-06-26  6:18                   ` Ni, Ruiyu
2017-06-26  6:31                     ` Zeng, Star
2017-06-23  8:10 ` [PATCH V2 0/3] Update comments and code for " Gao, Liming

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1498205290-157888-4-git-send-email-star.zeng@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox