mirror of https://github.com/acidanthera/audk.git
44 lines
1.4 KiB
NASM
44 lines
1.4 KiB
NASM
;------------------------------------------------------------------------------
|
|
; X64/CheckCookieMsvc.nasm
|
|
;
|
|
; Copyright (c) Microsoft Corporation.
|
|
; SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
;------------------------------------------------------------------------------
|
|
|
|
DEFAULT REL
|
|
SECTION .text
|
|
|
|
extern ASM_PFX(StackCheckFailure)
|
|
extern ASM_PFX(__security_cookie)
|
|
extern ASM_PFX(CpuDeadLoop)
|
|
|
|
; Called when a buffer check fails. This functionality is dependent on MSVC
|
|
; C runtime libraries and so is unsupported in UEFI.
|
|
global ASM_PFX(__report_rangecheckfailure)
|
|
ASM_PFX(__report_rangecheckfailure):
|
|
jmp ASM_PFX(CpuDeadLoop)
|
|
ret
|
|
|
|
; The GS handler is for checking the stack cookie during SEH or
|
|
; EH exceptions and is unsupported in UEFI.
|
|
global ASM_PFX(__GSHandlerCheck)
|
|
ASM_PFX(__GSHandlerCheck):
|
|
jmp ASM_PFX(CpuDeadLoop)
|
|
ret
|
|
|
|
;------------------------------------------------------------------------------
|
|
; Checks the stack cookie value against __security_cookie and calls the
|
|
; stack cookie failure handler if there is a mismatch.
|
|
;
|
|
; VOID
|
|
; EFIAPI
|
|
; __security_check_cookie (
|
|
; IN UINTN CheckValue
|
|
; );
|
|
;------------------------------------------------------------------------------
|
|
global ASM_PFX(__security_check_cookie)
|
|
ASM_PFX(__security_check_cookie):
|
|
cmp rcx, [ASM_PFX(__security_cookie)]
|
|
jne ASM_PFX(StackCheckFailure)
|
|
ret
|