]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Update behavior for GetTime() errors.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 9 May 2013 16:18:58 +0000 (16:18 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 9 May 2013 16:18:58 +0000 (16:18 +0000)
Please find the attached patch that fixes the ShellPkg when gRT->GetTime() returns an error (eg: early UEFI platform bringup with a RTC controller that is not supported).
On some platforms, gRT->GetTime() might not return EFI_SUCCESS. The Shell must check the return status before to assume the returned time is valid.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <Olivier.Martin@arm.com>
Reviewed-by: Jaben Carsey <Jaben.Carsey@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14337 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c
ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c

index e5596ba04bbeeb59907daf4166647f1c8e740544..6fbb3e59a9738050efc957b3c9275ee118867414 100644 (file)
@@ -221,7 +221,10 @@ ShellCommandRunDate (
         // get the current date\r
         //\r
         Status = gRT->GetTime(&TheTime, NULL);\r
-        ASSERT_EFI_ERROR(Status);\r
+        if (EFI_ERROR(Status)) {\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"gRT->GetTime", Status);\r
+          return (SHELL_DEVICE_ERROR);\r
+        }\r
 \r
         //\r
         // ShellPrintEx the date in SFO or regular format\r
@@ -312,7 +315,10 @@ CheckAndSetTime (
   }\r
 \r
   Status = gRT->GetTime(&TheTime, NULL);\r
-  ASSERT_EFI_ERROR(Status);\r
+  if (EFI_ERROR(Status)) {\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"gRT->GetTime", Status);\r
+    return (SHELL_DEVICE_ERROR);\r
+  }\r
 \r
   if (TimeString != NULL) {\r
     TimeStringCopy = NULL;\r
@@ -420,7 +426,11 @@ ShellCommandRunTime (
     // check for "-?"\r
     //\r
     Status = gRT->GetTime(&TheTime, NULL);\r
-    ASSERT_EFI_ERROR(Status);\r
+    if (EFI_ERROR(Status)) {\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"gRT->GetTime", Status);\r
+      return (SHELL_DEVICE_ERROR);\r
+    }\r
+\r
     if (ShellCommandLineGetFlag(Package, L"-?")) {\r
       ASSERT(FALSE);\r
     } else if (ShellCommandLineGetRawValue(Package, 2) != NULL) {\r
@@ -640,6 +650,7 @@ CheckAndSetTimeZone (
 \r
   Status = gRT->GetTime(&TheTime, NULL);\r
   if (EFI_ERROR(Status)) {\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"gRT->GetTime", Status);\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
@@ -785,7 +796,10 @@ ShellCommandRunTimeZone (
       // Get Current Time Zone Info\r
       //\r
       Status = gRT->GetTime(&TheTime, NULL);\r
-      ASSERT_EFI_ERROR(Status);\r
+      if (EFI_ERROR(Status)) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"gRT->GetTime", Status);\r
+        return (SHELL_DEVICE_ERROR);\r
+      }\r
 \r
       if (TheTime.TimeZone != EFI_UNSPECIFIED_TIMEZONE) {\r
         Found = FALSE;\r
index 29f6be393149aa14ed16c483b7113b1dc3e92c01..f5e27ef1a914866f86a5a353a32221f132a00e6a 100644 (file)
@@ -38,7 +38,11 @@ TouchFileByHandle (
     return (EFI_ACCESS_DENIED);\r
   }\r
   Status = gRT->GetTime(&FileInfo->ModificationTime, NULL);\r
-  ASSERT_EFI_ERROR(Status);\r
+  if (EFI_ERROR(Status)) {\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"gRT->GetTime", Status);\r
+    return (SHELL_DEVICE_ERROR);\r
+  }\r
+\r
   CopyMem(&FileInfo->LastAccessTime, &FileInfo->ModificationTime, sizeof(EFI_TIME));\r
 \r
   Status = gEfiShellProtocol->SetFileInfo(Handle, FileInfo);\r