]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: fix incorrect DOS header on Windows binaries
authorKevin Parsons <kevpar@microsoft.com>
Tue, 17 Jan 2023 08:02:17 +0000 (08:02 +0000)
committerCherry Mui <cherryyz@google.com>
Fri, 20 Jan 2023 20:52:48 +0000 (20:52 +0000)
The previous DOS header placed on Windows binaries was incorrect, as it had e_crlc (number of relocations) set to 4, instead of e_cparhdr (size of header in 16-bit words) set to 4. This resulted in execution starting at the beginning of the file, instead of where the DOS stub code actually exists.

Fixes #57834

Change-Id: I8c5966b65c72b2474b771b85aaadb61cad9f5be6
GitHub-Last-Rev: c715ad290a01218a1320834e519125e7a5f94384
GitHub-Pull-Request: golang/go#57835
Reviewed-on: https://go-review.googlesource.com/c/go/+/462054
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Quim Muntal <quimmuntal@gmail.com>
src/cmd/link/internal/ld/pe.go

index 0e291311a0afa08c5e7d3bdd6961efad74b94fee..10c1dc4ab3ea73cf632f72fee61e7ab8d49ece7b 100644 (file)
@@ -152,6 +152,7 @@ const (
 
 // DOS stub that prints out
 // "This program cannot be run in DOS mode."
+// See IMAGE_DOS_HEADER in the Windows SDK for the format of the header used here.
 var dosstub = []uint8{
        0x4d,
        0x5a,
@@ -159,9 +160,9 @@ var dosstub = []uint8{
        0x00,
        0x03,
        0x00,
-       0x04,
        0x00,
        0x00,
+       0x04,
        0x00,
        0x00,
        0x00,