- NewSize = StrSize(CurrentString);\r
- NewSize -= StrLen(Node->Key) - 1;\r
- Node->Val = AllocateZeroPool(NewSize);\r
- ASSERT(Node->Val != NULL);\r
- StrCpy(Node->Val, CurrentString + StrLen(Node->Key) + 1);\r
+\r
+ //\r
+ // ValueSize = TotalSize - already removed size - size for '=' + size for terminator (the last 2 items cancel each other)\r
+ //\r
+ Node->Val = AllocateCopyPool(StrSize(CurrentString) - StrSize(Node->Key), CurrentString + StrLen(Node->Key) + 1);\r
+ if (Node->Val == NULL) {\r
+ SHELL_FREE_NON_NULL(Node->Key);\r
+ SHELL_FREE_NON_NULL(Node);\r
+ SetEnvironmentVariableList(&VarList->Link);\r
+ return (EFI_OUT_OF_RESOURCES);\r
+ }\r
+\r