]> git.proxmox.com Git - mirror_edk2.git/commit
MdeModulePkg/TerminalDxe: Terminal fifo buffer overflow.
authorgechao <gechao@greatwall.com.cn>
Thu, 14 Jan 2021 03:22:59 +0000 (11:22 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 3 Feb 2021 01:56:42 +0000 (01:56 +0000)
commit839f649abb6d11fa3e9137ba2afdb2d1d037ba60
tree462817a9a2efb6f0f8fa0261276612f8b2617ac7
parent3f90ac3ec03512e2374cd2968c047a7e856a8965
MdeModulePkg/TerminalDxe: Terminal fifo buffer overflow.

Fix the bug of terminal fifo buffer overflow with UINT8 type.

typedef struct {
  UINT8 Head;
  UINT8 Tail;
  UINT8 Data[RAW_FIFO_MAX_NUMBER + 1];
} RAW_DATA_FIFO;
RAW_FIFO_MAX_NUMBER is 256.
the data buffer size is 257 (Index from 0 to 256), but the max value of
the index, Head or Tail (UINT8), is 255. That means the last data of the
data buffer would be always empty if we use Head/Tail to output/input the
data correctly.  And because of the incorrect buffer size the FIFO full
check "((Tail + 1) % (RAW_FIFO_MAX_NUMBER + 1)) == Head" would never meet.

Signed-off-by: gechao <gechao@greatwall.com.cn>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h