Update to go1.16.6
- Security fix for CVE-2021-34558
This commit is contained in:
		
							parent
							
								
									755f2e9f59
								
							
						
					
					
						commit
						fb3fb1e87e
					
				| @ -106,7 +106,7 @@ | ||||
| %endif | ||||
| 
 | ||||
| %global go_api 1.16 | ||||
| %global go_version %{go_api}.5 | ||||
| %global go_version %{go_api}.6 | ||||
| 
 | ||||
| # For rpmdev-bumpspec and releng automation | ||||
| %global baserelease 1 | ||||
| @ -158,8 +158,6 @@ Requires:       go-srpm-macros | ||||
| Patch1:       0001-Don-t-use-the-bundled-tzdata-at-runtime-except-for-t.patch | ||||
| Patch2:       0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch | ||||
| Patch3:       0003-cmd-go-disable-Google-s-proxy-and-sumdb.patch | ||||
| # Scheduled backport for go1.16 https://golang.org/cl/316750 by laboger | ||||
| # Patch4:       ppc64x-linker-fix.patch | ||||
| 
 | ||||
| # Having documentation separate was broken | ||||
| Obsoletes:      %{name}-docs < 1.1-4 | ||||
| @ -531,6 +529,10 @@ fi | ||||
| %endif | ||||
| 
 | ||||
| %changelog | ||||
| * Wed Jul 14 2021 Mike Rochefort <mroche@fedoraproject.org> - 1.16.6-1 | ||||
| - Update to go1.16.6 | ||||
| - Security fix for CVE-2021-34558 | ||||
| 
 | ||||
| * Mon Jun 21 2021 Mike Rochefort <mroche@fedoraproject.org> - 1.16.5-1 | ||||
| - Update to go1.16.5 | ||||
| - Security fix for CVE-2021-33195 | ||||
|  | ||||
| @ -1,70 +0,0 @@ | ||||
| From 714d86f88554329d7f134dee318f57c6c0b524a7 Mon Sep 17 00:00:00 2001 | ||||
| From: Lynn Boger <laboger@linux.vnet.ibm.com> | ||||
| Date: Thu, 29 Apr 2021 16:07:25 -0500 | ||||
| Subject: [PATCH] [release-branch.go1.16] cmd/link/internal: fix use of DynlinkingGo with ppc64le trampolines | ||||
| 
 | ||||
| When creating programs with large text sections on ppc64le, | ||||
| trampolines are needed for calls that are too far; however | ||||
| they are not created if the code is generated such that the TOC | ||||
| register r2 is initialized and maintained in the code because | ||||
| then the external linker can create the trampolines. Previously | ||||
| the function DynlinkingGo was used to determine this but in the | ||||
| case where plugins are used, this could return true even though | ||||
| r2 is not valid. | ||||
| 
 | ||||
| To fix this problem I've added a new function r2Valid which returns | ||||
| true when the build options indicate that the r2 is | ||||
| initialized and maintained. Because of the ways that | ||||
| DynlinkingGo is used I wanted to maintain its previous | ||||
| behavior. | ||||
| 
 | ||||
| Fixes #45927 | ||||
| 
 | ||||
| Change-Id: I6d902eba6ad41757aa6474948b79acdbd479cb38 | ||||
| Reviewed-on: https://go-review.googlesource.com/c/go/+/315289 | ||||
| Trust: Lynn Boger <laboger@linux.vnet.ibm.com> | ||||
| Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> | ||||
| Reviewed-by: Cherry Zhang <cherryyz@google.com> | ||||
| TryBot-Result: Go Bot <gobot@golang.org> | ||||
| (cherry picked from commit 9ed736ac2a99aa2e7ef7d8bed3b01ca8b20a6f80) | ||||
| ---
 | ||||
| 
 | ||||
| diff --git a/src/cmd/link/internal/ppc64/asm.go b/src/cmd/link/internal/ppc64/asm.go
 | ||||
| index 602f0b5..539afac 100644
 | ||||
| --- a/src/cmd/link/internal/ppc64/asm.go
 | ||||
| +++ b/src/cmd/link/internal/ppc64/asm.go
 | ||||
| @@ -642,6 +642,16 @@
 | ||||
|  	return int64(o2)<<32 | int64(o1) | ||||
|  } | ||||
|   | ||||
| +// Determine if the code was compiled so that the TOC register R2 is initialized and maintained
 | ||||
| +func r2Valid(ctxt *ld.Link) bool {
 | ||||
| +	switch ctxt.BuildMode {
 | ||||
| +	case ld.BuildModeCArchive, ld.BuildModeCShared, ld.BuildModePIE, ld.BuildModeShared, ld.BuildModePlugin:
 | ||||
| +		return true
 | ||||
| +	}
 | ||||
| +	// -linkshared option
 | ||||
| +	return ctxt.IsSharedGoLink()
 | ||||
| +}
 | ||||
| +
 | ||||
|  // resolve direct jump relocation r in s, and add trampoline if necessary | ||||
|  func trampoline(ctxt *ld.Link, ldr *loader.Loader, ri int, rs, s loader.Sym) { | ||||
|   | ||||
| @@ -649,7 +659,7 @@
 | ||||
|  	// For internal linking, trampolines are always created for long calls. | ||||
|  	// For external linking, the linker can insert a call stub to handle a long call, but depends on having the TOC address in | ||||
|  	// r2.  For those build modes with external linking where the TOC address is not maintained in r2, trampolines must be created. | ||||
| -	if ctxt.IsExternal() && (ctxt.DynlinkingGo() || ctxt.BuildMode == ld.BuildModeCArchive || ctxt.BuildMode == ld.BuildModeCShared || ctxt.BuildMode == ld.BuildModePIE) {
 | ||||
| +	if ctxt.IsExternal() && r2Valid(ctxt) {
 | ||||
|  		// No trampolines needed since r2 contains the TOC | ||||
|  		return | ||||
|  	} | ||||
| @@ -703,7 +713,7 @@
 | ||||
|  				} | ||||
|  			} | ||||
|  			if ldr.SymType(tramp) == 0 { | ||||
| -				if ctxt.DynlinkingGo() || ctxt.BuildMode == ld.BuildModeCArchive || ctxt.BuildMode == ld.BuildModeCShared || ctxt.BuildMode == ld.BuildModePIE {
 | ||||
| +				if r2Valid(ctxt) {
 | ||||
|  					// Should have returned for above cases | ||||
|  					ctxt.Errorf(s, "unexpected trampoline for shared or dynamic linking") | ||||
|  				} else { | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user