ShellPkg/Cd: Handle memory allocation failure

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
This commit is contained in:
Ruiyu Ni 2016-07-13 17:38:05 +08:00
parent 581c03896c
commit a34b7c3662
1 changed files with 21 additions and 13 deletions

View File

@ -2,7 +2,7 @@
Main file for attrib shell level 2 function.
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2016, 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
@ -125,13 +125,17 @@ ShellCommandRunCd (
} else {
CwdSize = StrSize(Directory) + sizeof(CHAR16);
Cwd = AllocateZeroPool(CwdSize);
ASSERT(Cwd!=NULL);
if (Cwd == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellLevel2HiiHandle, L"cd");
ShellStatus = SHELL_OUT_OF_RESOURCES;
} else {
StrCpyS (Cwd, StrSize (Directory) / sizeof (CHAR16) + 1, Directory);
StrCatS (Cwd, StrSize (Directory) / sizeof (CHAR16) + 1, L"\\");
Drive = GetFullyQualifiedPath (Cwd);
PathRemoveLastItem (Drive);
FreePool (Cwd);
}
}
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
//
// change directory on current drive letter
@ -153,13 +157,17 @@ ShellCommandRunCd (
} else {
CwdSize = StrSize(Directory) + sizeof(CHAR16);
Cwd = AllocateZeroPool(CwdSize);
ASSERT(Cwd!=NULL);
if (Cwd == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellLevel2HiiHandle, L"cd");
ShellStatus = SHELL_OUT_OF_RESOURCES;
} else {
StrCpyS (Cwd, StrSize (Directory) / sizeof (CHAR16) + 1, Directory);
StrCatS (Cwd, StrSize (Directory) / sizeof (CHAR16) + 1, L"\\");
Drive = GetFullyQualifiedPath (Cwd);
while (PathRemoveLastItem (Drive));
FreePool (Cwd);
}
}
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
//
// change directory on current drive letter