From 4a4de1416654ec0c3cd6100fddb90a228657216a Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Wed, 12 Oct 2022 10:39:27 +0000 Subject: [PATCH] runtime: fix invalid pointer in windows/arm64 badsignal2 Initializes the R3 register with an available address in the stack. The addressed location is used to receive the number of bytes written by WriteFile. Fixes #56080 Change-Id: I0368eb7a31d2d6a098fa9c26e074eb1114a92704 GitHub-Last-Rev: 23dbdb53782b38819340ef6609e2c55303eb886d GitHub-Pull-Request: golang/go#56153 Reviewed-on: https://go-review.googlesource.com/c/go/+/442216 Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot Run-TryBot: Cherry Mui Reviewed-by: Bryan Mills --- src/runtime/sys_windows_arm64.s | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/runtime/sys_windows_arm64.s b/src/runtime/sys_windows_arm64.s index 024625f821..b39df4f124 100644 --- a/src/runtime/sys_windows_arm64.s +++ b/src/runtime/sys_windows_arm64.s @@ -113,7 +113,8 @@ TEXT runtime·badsignal2(SB),NOSPLIT,$16-0 MOVD $runtime·badsignalmsg(SB), R1 // lpBuffer MOVD $runtime·badsignallen(SB), R2 // lpNumberOfBytesToWrite MOVD (R2), R2 - MOVD R13, R3 // lpNumberOfBytesWritten + // point R3 to stack local that will receive number of bytes written + ADD $16, RSP, R3 // lpNumberOfBytesWritten MOVD $0, R4 // lpOverlapped MOVD runtime·_WriteFile(SB), R12 SUB $16, RSP // skip over saved frame pointer below RSP