mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 14:44:28 +02:00
ShellPkg/redirection: Insert \xFEFF for ENV variable redirection
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1080 Per Shell spec 2.2 chapter 3.4.4.2, Unicode file tag should be inserted in the output from the input redirected variable, to ensure it looks like a UCS-2 encode file. The patch fixes this issue. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
This commit is contained in:
parent
bc0d3e2912
commit
52047be024
@ -1153,10 +1153,30 @@ FileInterfaceEnvRead(
|
|||||||
OUT VOID *Buffer
|
OUT VOID *Buffer
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return (SHELL_GET_ENVIRONMENT_VARIABLE(
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
*BufferSize = *BufferSize / sizeof (CHAR16) * sizeof (CHAR16);
|
||||||
|
if (*BufferSize != 0) {
|
||||||
|
//
|
||||||
|
// Make sure the first unicode character is \xFEFF
|
||||||
|
//
|
||||||
|
*(CHAR16 *)Buffer = gUnicodeFileTag;
|
||||||
|
Buffer = (CHAR16 *)Buffer + 1;
|
||||||
|
*BufferSize -= sizeof (gUnicodeFileTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = SHELL_GET_ENVIRONMENT_VARIABLE (
|
||||||
((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,
|
((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,
|
||||||
BufferSize,
|
BufferSize,
|
||||||
Buffer));
|
Buffer
|
||||||
|
);
|
||||||
|
if (!EFI_ERROR (Status) || (Status == EFI_BUFFER_TOO_SMALL)) {
|
||||||
|
//
|
||||||
|
// BufferSize is valid and needs update when Status is Success or BufferTooSmall.
|
||||||
|
//
|
||||||
|
*BufferSize += sizeof (gUnicodeFileTag);
|
||||||
|
}
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user