From nobody Fri Dec 27 03:15:24 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1503994280671425.1425196034701; Tue, 29 Aug 2017 01:11:20 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E966F21E2BE52; Tue, 29 Aug 2017 01:08:35 -0700 (PDT) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5D3CC21E2BE46 for ; Tue, 29 Aug 2017 01:08:33 -0700 (PDT) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Aug 2017 01:11:13 -0700 Received: from ray-dev.ccr.corp.intel.com ([10.239.9.2]) by fmsmga001.fm.intel.com with ESMTP; 29 Aug 2017 01:11:12 -0700 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,444,1498546800"; d="scan'208";a="1189250912" From: Ruiyu Ni To: edk2-devel@lists.01.org Date: Tue, 29 Aug 2017 16:11:06 +0800 Message-Id: <20170829081107.442452-3-ruiyu.ni@intel.com> X-Mailer: git-send-email 2.12.2.windows.2 In-Reply-To: <20170829081107.442452-1-ruiyu.ni@intel.com> References: <20170829081107.442452-1-ruiyu.ni@intel.com> Subject: [edk2] [PATCH 2/3] ShellPkg: Fix bug that fails to change CWD after "map -r". X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Huajing Li MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Huajing Li When "map -r" runs, the mapping list is re-created but gShellCurMapping still points to the old mapping list which is already destroyed. The patch updates the gShellCurMapping to point to the correct location in the new mapping list. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Huajing Li Reviewed-by: Ruiyu Ni --- .../UefiShellCommandLib/UefiShellCommandLib.c | 36 ++++++++++++++++++= +++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c b/S= hellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c index b9158d1243..c7984f11b2 100644 --- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c +++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c @@ -1268,7 +1268,14 @@ ShellCommandCreateInitialMappingsAndPaths( CHAR16 *NewConsistName; EFI_DEVICE_PATH_PROTOCOL **ConsistMappingTable; SHELL_MAP_LIST *MapListNode; - + CONST CHAR16 *CurDir; + CHAR16 *SplitCurDir; + CHAR16 *MapName; + SHELL_MAP_LIST *MapListItem; + + SplitCurDir =3D NULL; + MapName =3D NULL; + MapListItem =3D NULL; HandleList =3D NULL; =20 // @@ -1354,6 +1361,33 @@ ShellCommandCreateInitialMappingsAndPaths( SHELL_FREE_NON_NULL(DevicePathList); =20 HandleList =3D NULL; + + // + //gShellCurMapping point to node of current file system in the gShellM= apList. When reset all mappings, + //all nodes in the gShellMapList will be free. Then gShellCurMapping w= ill be a dangling pointer, So, + //after created new mappings, we should reset the gShellCurMapping poi= nter back to node of current file system. + // + if (gShellCurMapping !=3D NULL) { + gShellCurMapping =3D NULL; + CurDir =3D gEfiShellProtocol->GetEnv(L"cwd"); + if (CurDir !=3D NULL) { + MapName =3D AllocateCopyPool (StrSize(CurDir), CurDir); + if (MapName =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + SplitCurDir =3D StrStr (MapName, L":"); + if (SplitCurDir =3D=3D NULL) { + SHELL_FREE_NON_NULL (MapName); + return EFI_UNSUPPORTED; + } + *(SplitCurDir + 1) =3D CHAR_NULL; + MapListItem =3D ShellCommandFindMapItem (MapName); + if (MapListItem !=3D NULL) { + gShellCurMapping =3D MapListItem; + } + SHELL_FREE_NON_NULL (MapName); + } + } } else { Count =3D (UINTN)-1; } --=20 2.12.2.windows.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel