]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix invalid pointer in windows/arm64 badsignal2
authorBill Zissimopoulos <billziss@navimatics.com>
Wed, 12 Oct 2022 10:39:27 +0000 (10:39 +0000)
committerDavid Chase <drchase@google.com>
Wed, 12 Oct 2022 19:16:52 +0000 (19:16 +0000)
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 <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/runtime/sys_windows_arm64.s

index 024625f82106687ddc31a584cd213a2c96a73cf7..b39df4f1241be1309c91fe0e349103fb3eff4c92 100644 (file)
@@ -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