Conversation
Change-Id: Id2aa864e4549623cc6d98d95028858d41459fa63 Reviewed-on: https://go-review.googlesource.com/c/go/+/679176 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
…ch.go1.25 Merge List: + 2025-06-09 da0e8c4 cmd/compile: relax reshaping condition + 2025-06-09 7800f4f log/slog: fix level doc on handlers + 2025-06-07 d184f8d runtime: check for gsignal in racecall on loong64 + 2025-06-06 0ccfbc8 os/signal: doc link to syscall.EPIPE Change-Id: I4e3cfdb4769207ba87788da1650ed2a1f731ed86
…ch.go1.25 Merge List: + 2025-06-10 7fa2c73 os: disallow Root.Remove(".") on Plan 9, js, and Windows + 2025-06-10 281cfcf runtime: handle system goroutines later in goroutine profiling + 2025-06-10 4f86f22 testing/synctest, runtime: avoid panic when using linker-alloc WG from bubble + 2025-06-10 773701a internal/trace: pass GOTRACEBACK=crash to testprogs + 2025-06-10 fb0c27c os: do not follow dangling symlinks in Root when O_CREATE|O_EXCL on AIX + 2025-06-10 1cafdfb net/http: make the zero value of CrossOriginProtection work + 2025-06-10 a35701b cmd/dist: only install necessary tools when doing local test + 2025-06-10 a189516 runtime: don't do a direct G handoff in semrelease on systemstack + 2025-06-10 f18d046 all.{bash,rc}: use "../bin/go tool dist" instead of "%GOTOOLDIR%/dist" print build info + 2025-06-09 ee7bfbd cmd/compile/internal/ssa: fix PPC64 merging of (AND (S[RL]Dconst ...) + 2025-06-09 985d600 runtime: use small struct TestSynctest to ensure cleanups run + 2025-06-09 848a768 runtime: clarify stack traces for bubbled goroutines + 2025-06-09 049a5e6 runtime: return a different bubble deadlock error when main goroutine is done + 2025-06-09 ac16867 cmd/internal/doc: increase version of pkgsite doc command that's run Change-Id: Iba7b2c2f06e91a39fa039c08170e6054e50de3c6
Change-Id: I2611db09afd71b4b4811d118ec8c2446de4f8d40 Reviewed-on: https://go-review.googlesource.com/c/go/+/681056 Auto-Submit: Gopher Robot <gobot@golang.org> TryBot-Bypass: Gopher Robot <gobot@golang.org> Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
…ch.go1.25 Merge List: + 2025-07-01 2f653a5 crypto/tls: ensure the ECDSA curve matches the signature algorithm + 2025-07-01 6e95fd9 crypto/ecdsa: fix crypto/x509 godoc links + 2025-07-01 7755a05 Revert "crypto/internal/fips140/subtle: add assembly implementation of xorBytes for arm" + 2025-07-01 d168ad1 slices: update TestIssue68488 to avoid false positives + 2025-07-01 27ad1f5 internal/abi: fix comment on NonEmptyInterface + 2025-06-30 86fca3d encoding/json/jsontext: use bytes.Buffer.AvailableBuffer + 2025-06-30 6bd9944 encoding/json/v2: avoid escaping jsonopts.Struct + 2025-06-30 e46d586 cmd/compile/internal/escape: add debug hash for literal allocation optimizations + 2025-06-30 479b51e cmd/compile/internal/escape: stop disabling literal allocation optimizations when coverage is enabled + 2025-06-30 8002d28 crypto/tls: update bogo version + 2025-06-30 fdd7713 internal/goexperiment: fix godoc formatting + 2025-06-30 740857f runtime: stash allpSnapshot on the M + 2025-06-30 9ae38be sync: disassociate WaitGroups from bubbles on Wait + 2025-06-30 4731832 crypto/hmac: wrap ErrUnsupported returned by Clone + 2025-06-30 03ad694 runtime: update skips for TestGdbBacktrace + 2025-06-30 9d1cd0b iter: add missing type parameter in doc + 2025-06-29 acb914f cmd/doc: fix -http on Windows + 2025-06-27 b51f1cd runtime: remove arbitrary 5-second timeout in TestNeedmDeadlock + 2025-06-27 f1e6ae2 reflect: fix TypeAssert on nil interface values + 2025-06-27 e81c624 os: use minimal file permissions when opening parent directory in RemoveAll + 2025-06-27 2a22aef encoding/json: add security section to doc + 2025-06-27 742fda9 runtime: account for missing frame pointer in preamble + 2025-06-27 fdc076c net/http: fix RoundTrip context cancellation for js/wasm + 2025-06-27 d9d2cad encoding/json: fix typo in hotlink for jsontext.PreserveRawStrings + 2025-06-26 0f8ab2d cmd/link: permit a larger size BSS reference to a smaller DATA symbol + 2025-06-26 988a20c cmd/compile/internal/escape: evaluate any side effects when rewriting with literals + 2025-06-25 b5d5559 encoding/json/jsontext: remove Encoder.UnusedBuffer + 2025-06-25 0b4d2ea encoding/json/jsontext: rename Encoder.UnusedBuffer as Encoder.AvailableBuffer + 2025-06-25 f8ccda2 runtime: make explicit nil check in (*spanInlineMarkBits).init + 2025-06-25 f069a82 runtime: note custom GOMAXPROCS even if value doesn't change + 2025-06-24 e515ef8 context: fix typo in context_test.go + 2025-06-24 47b941f cmd/link: add one more linkname to the blocklist + 2025-06-24 34cf5f6 go/types: add test for interface method field type + 2025-06-24 6e618cd encoding/json: use zstd compressed testdata + 2025-06-24 fcb9850 net/http: reduce allocs in CrossOriginProtection.Check + 2025-06-24 11f11f2 encoding/json/v2: support ISO 8601 durations + 2025-06-24 62deaf4 doc: fix links to runtime Environment Variables + 2025-06-24 2e9bb62 encoding/json/v2: reject unquoted dash as a JSON field name + 2025-06-23 ed78157 encoding/json/v2: report error on time.Duration without explicit format + 2025-06-23 f866958 cmd/dist: test encoding/json/... with GOEXPERIMENT=jsonv2 + 2025-06-23 f77a0aa internal/trace: improve gc-stress test + 2025-06-23 4506796 encoding/json/jsontext: consistently use JSON terminology + 2025-06-23 456a90a runtime: add missing unlock in sysReserveAlignedSbrk + 2025-06-23 1cf6386 Revert "go/types, types2: don't register interface methods in Info.Types map" + 2025-06-20 49cdf0c testing, testing/synctest: handle T.Helper in synctest bubbles + 2025-06-20 3bf1eec runtime: fix struct comment + 2025-06-20 8ed23a2 crypto/cipher: fix link to crypto/aes + 2025-06-20 ef60769 go/doc: add a golden test that reproduces golang#62640 + 2025-06-18 8552bcf cmd/go/internal/fips140: ignore GOEXPERIMENT on error + 2025-06-18 4c75672 runtime: set mspan limit field early and eagerly + 2025-06-18 c6ac736 runtime: prevent mutual deadlock between GC stopTheWorld and suspendG + 2025-06-17 53af292 encoding/json/jsontext: fix spelling error + 2025-06-16 d058254 cmd/dist: always include variant in package names + 2025-06-16 3254c2b internal/reflectlite: fix comment about meaning of flag field + 2025-06-16 816199e runtime: don't let readTrace spin on trace.shutdown + 2025-06-16 ea00461 internal/trace: make Value follow reflect conventions + 2025-06-13 96a6e14 runtime: comment that some linknames are used by runtime/trace + 2025-06-13 6449058 runtime: remove unused unique.runtime_blockUntilEmptyFinalizerQueue + 2025-06-13 683810a cmd/link: block new standard library linknames + 2025-06-12 9149876 all: replace a few user-visible mentions of golang.org and godoc.org + 2025-06-12 934d5f2 internal/trace: end test programs with SIGQUIT + 2025-06-12 5a08865 net: remove some BUG entries + 2025-06-11 d166a0b encoding/json/jsontext, encoding/json/v2: document experimental nature + 2025-06-11 d4c6eff cmd/compile: add up-to-date test for generated files Change-Id: I555d5d1bf8c8607fa0660146019657f4c04084e3
…ne module Removes the somewhat redundant vcs.FromDir, "allowNesting" argument, which was always enabled, and disallow multiple VCS metadata folders being present in a single directory. This makes VCS injection attacks much more difficult. Also adds a GODEBUG, allowmultiplevcs, which re-enables this behavior. Thanks to RyotaK (https://ryotak.net) of GMO Flatt Security Inc for reporting this issue. Fixes golang#74380 Fixes CVE-2025-4674 Change-Id: I95b619588ecb6661770aa4e1d6023d6cb22e2263 Reviewed-on: https://go-review.googlesource.com/c/go/+/686338 Reviewed-by: David Chase <drchase@google.com> Auto-Submit: Carlos Amedee <carlos@golang.org> TryBot-Bypass: Carlos Amedee <carlos@golang.org>
Change-Id: Iaf3a30e4c794c3f58abf429000d41f1c4f2fede1 Reviewed-on: https://go-review.googlesource.com/c/go/+/686456 TryBot-Bypass: Gopher Robot <gobot@golang.org> Auto-Submit: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Carlos Amedee <carlos@golang.org>
…ch.go1.25 Merge List: + 2025-07-23 489868f cmd/link: scope test to linux & net.sendFile + 2025-07-22 71c2bf5 cmd/compile: fix loclist for heap return vars without optimizations + 2025-07-22 c74399e net: correct comment for ListenConfig.ListenPacket + 2025-07-22 4ed9943 all: go fmt + 2025-07-22 1aaf742 cmd/internal/objabi: remove redundant word in comment + 2025-07-21 d5ec081 runtime: relax TestMemoryLimitNoGCPercent a bit + 2025-07-21 f7cc61e cmd/compile: for arm64 epilog, do SP increment with a single instruction + 2025-07-21 5dac423 runtime: fix asan wrapper for riscv64 + 2025-07-21 e5502e0 cmd/go: check subcommand properties + 2025-07-19 2363897 cmd/internal/obj: enable got pcrel itype in fips140 for riscv64 + 2025-07-19 e32255f cmd/compile/internal/ssa: restrict architectures for TestDebugLines_74576 + 2025-07-18 0451816 os: revert the use of AddCleanup to close files and roots + 2025-07-18 34b7068 go/types: infer correct type for y in append(bytes, y...) + 2025-07-17 6653624 cmd/compile/internal/escape: improve DWARF .debug_line numbering for literal rewriting optimizations + 2025-07-16 385000b runtime: fix idle time double-counting bug + 2025-07-16 f506ad2 cmd/compile/internal/escape: speed up analyzing some functions with many closures + 2025-07-16 9c507e7 cmd/link, runtime: on Wasm, put only function index in method table and func table + 2025-07-16 9782dcf runtime: use 32-bit function index on Wasm + 2025-07-16 c876bf9 cmd/internal/obj/wasm: use 64-bit instructions for indirect calls + 2025-07-15 b4309ec cmd/internal/doc: upgrade godoc pkgsite to 01b046e + 2025-07-15 75a19db runtime: use memclrNoHeapPointers to clear inline mark bits + 2025-07-15 6d4a91c runtime: only clear inline mark bits on span alloc if necessary + 2025-07-15 0c6296a runtime: have mergeInlineMarkBits also clear the inline mark bits + 2025-07-15 397d211 runtime: merge inline mark bits with gcmarkBits 8 bytes at a time + 2025-07-15 7dceabd runtime/maps: fix typo in group.go comment (instrinsified -> intrinsified) + 2025-07-15 d826bf4 os: remove useless error check + 2025-07-14 bb07e55 runtime: expand GOMAXPROCS documentation + 2025-07-14 9159cd4 encoding/json: decompose legacy options + 2025-07-14 c6556b8 encoding/json/v2: add security section to doc + 2025-07-11 6ebb5f5 runtime: gofmt after CL 643897 and CL 662455 + 2025-07-11 1e48ca7 encoding/json: remove legacy option to EscapeInvalidUTF8 + 2025-07-11 a0a99cb encoding/json/v2: report wrapped io.ErrUnexpectedEOF + 2025-07-11 9d04122 crypto/rsa: drop contradictory promise to keep PublicKey modulus secret + 2025-07-11 1ca2368 crypto/rsa: fix documentation formatting + 2025-07-11 4bc3373 runtime: turn off large memmove tests under asan/msan + 2025-07-11 88cf0c5 cmd/link: do size fixups after symbol references are loaded + 2025-07-10 7a38975 os: trivial comment fix + 2025-07-10 aa5de9e synctest: fix comments for time.Now() in synctests + 2025-07-10 63ec70d crypto/cipher: Fix comment punctuation + 2025-07-09 8131635 runtime: run TestSignalDuringExec in its own process group + 2025-07-09 67c1704 crypto/tls: empty server_name conf. ext. from server + 2025-07-08 54c9d77 cmd/go: disable support for multiple vcs in one module + 2025-07-08 fca43a8 internal: make struct comment match struct name + 2025-07-08 bb917bb cmd/compile: document that nosplit directive is unsafe + 2025-07-08 a5bda58 cmd/compile: run fmt on ssa + 2025-07-07 86b5ba7 internal/trace: only test for sync preemption if async preemption is off + 2025-07-07 ef46e1b cmd/internal/doc: fix GOROOT skew and path joining bugs + 2025-07-07 75b43f9 runtime: make traceStack testable and add a benchmark + 2025-07-07 20978f4 crypto/rsa: remove another forgotten note to future self + 2025-07-07 33fb481 cmd/compile/internal/ssa: skip EndSequence entries in TestStmtLines + 2025-07-07 a995269 sort: clarify Less doc + 2025-07-03 6c3b5a2 runtime: correct vdsoSP on S390X + 2025-07-03 dd687c3 hash: document that Clone may only return ErrUnsupported or a nil error + 2025-07-02 b325151 cmd/cgo/internal/testsanitizers: skip asan tests when FIPS140 mode is on + 2025-07-02 15d9fe4 testing/synctest: explicitly state Run will be removed in Go 1.26 + 2025-07-01 de646d9 cmd/go/internal/modindex: apply changes in CL 502615 to modindex package Change-Id: I0420eec24c176a76a0ae51ddf6e34ee3fe4ae8ba
… tool -n If we're running go tool -n always return the cached path of the tool. We can't always use the cached path when running the tool because if we copied the tool to the cached location in the same process and then try to run it we'll run into golang#22315, producing spurious ETXTBSYs. Fixes golang#72824 Change-Id: I81f23773b9028f955ccc97453627ae4f2573814b Reviewed-on: https://go-review.googlesource.com/c/go/+/688895 Auto-Submit: Michael Matloob <matloob@golang.org> Reviewed-by: Michael Matloob <matloob@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> (cherry picked from commit efc37e9) Reviewed-on: https://go-review.googlesource.com/c/go/+/690895 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
…ccount TestImpersonated and TestGroupIdsTestUser are flaky due to sporadic failures when creating the test user account when running the tests from different processes at the same time. This flakiness can be fixed by using a random name for the test user account. Fixes golang#73523 Fixes golang#74727 Fixes golang#74728 Fixes golang#74729 Fixes golang#74745 Fixes golang#74751 Cq-Include-Trybots: luci.golang.try:go1.25-windows-amd64-longtest Change-Id: Ib2283a888437420502b1c11d876c975f5af4bc03 Reviewed-on: https://go-review.googlesource.com/c/go/+/690175 Auto-Submit: Quim Muntal <quimmuntal@gmail.com> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org> (cherry picked from commit 374e3be) Reviewed-on: https://go-review.googlesource.com/c/go/+/690555 Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Quim Muntal <quimmuntal@gmail.com> Reviewed-by: Mark Freeman <mark@golang.org>
…nd ".." in LookPath Fix incorrect expansion of "" and "." when $PATH contains an executable file or, on Windows, a parent directory of a %PATH% element contains an file with the same name as the %PATH% element but with one of the %PATHEXT% extension (ex: C:\utils\bin is in PATH, and C:\utils\bin.exe exists). Fix incorrect expansion of ".." when $PATH contains an element which is an the concatenation of the path to an executable file (or on Windows a path that can be expanded to an executable by appending a %PATHEXT% extension), a path separator and a name. "", "." and ".." are now rejected early with ErrNotFound. Fixes CVE-2025-47906 Fixes golang#74466 Change-Id: Ie50cc0a660fce8fbdc952a7f2e05c36062dcb50e Reviewed-on: https://go-review.googlesource.com/c/go/+/685755 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Damien Neil <dneil@google.com> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Damien Neil <dneil@google.com> (cherry picked from commit e0b07dc) Reviewed-on: https://go-review.googlesource.com/c/go/+/691775 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
…s in progress A database/sql/driver.Rows can return database-owned data from Rows.Next. The driver.Rows documentation doesn't explicitly document the lifetime guarantees for this data, but a reasonable expectation is that the caller of Next should only access it until the next call to Rows.Close or Rows.Next. Avoid violating that constraint when a query is cancelled while a call to database/sql.Rows.Scan (note the difference between the two different Rows types!) is in progress. We previously took care to avoid closing a driver.Rows while the user has access to driver-owned memory via a RawData, but we could still close a driver.Rows while a Scan call was in the process of reading previously-returned driver-owned data. Update the fake DB used in database/sql tests to invalidate returned data to help catch other places we might be incorrectly retaining it. Updates golang#74831 Fixes golang#74834 Change-Id: Ice45b5fad51b679c38e3e1d21ef39156b56d6037 Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2540 Reviewed-by: Roland Shoemaker <bracewell@google.com> Reviewed-by: Neal Patel <nealpatel@google.com> Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2600 Reviewed-on: https://go-review.googlesource.com/c/go/+/693559 Auto-Submit: Dmitri Shuralyov <dmitshur@google.com> TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Mark Freeman <markfreeman@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Change-Id: I7801c8fe17b0712b479d45fda0d81c060a904097 Reviewed-on: https://go-review.googlesource.com/c/go/+/693716 TryBot-Bypass: Gopher Robot <gobot@golang.org> Auto-Submit: Gopher Robot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Mark Freeman <markfreeman@google.com>
Change-Id: I46dcb2de47fd752d61863cc351ad792b64995a93 Reviewed-on: https://go-review.googlesource.com/c/go/+/695416 Auto-Submit: Gopher Robot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Bypass: Gopher Robot <gobot@golang.org> Commit-Queue: David Chase <drchase@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: David Chase <drchase@google.com>
…r toolchain versions We forgot to call the IsPrerelease function on FromToolchain(vers) rather than on vers itself. IsPrerelase expects a version without the "go" prefix. See the corresponding code in ModIsValid and ModIsPrefix that call FromToolchain before passing the versions to IsValid and IsLang respectively. Fixes golang#74822 Change-Id: I3cf055e1348e6a9dc0334e414f06fe85eaf78024 Reviewed-on: https://go-review.googlesource.com/c/go/+/691655 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Michael Matloob <matloob@golang.org> Reviewed-by: Michael Matloob <matloob@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> (cherry picked from commit 69338a3) Reviewed-on: https://go-review.googlesource.com/c/go/+/691958
…ookPath on plan9 The correction in CL 685755 is incomplete for plan9, where path search is performed even on file strings containing "/". By applying filepath.Clean to the argument of validateLookPath, we can check for bogus file strings containing ".." where the later call to filepath.Join would transform a path like "badfile/dir/.." to "badfile" even where "dir" isn't a directory or doesn't exist. For golang#74466 Fixes golang#75008 Change-Id: I3f8b73a1de6bc7d8001b1ca8e74b78722408548e Reviewed-on: https://go-review.googlesource.com/c/go/+/693935 Reviewed-by: David du Colombier <0intro@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> (cherry picked from commit 674c5f0) Reviewed-on: https://go-review.googlesource.com/c/go/+/698416 Reviewed-by: Cherry Mui <cherryyz@google.com>
…fatal panics Unblocking a bubbled goroutine from outside the bubble is an error and panics. Currently, some of those panics are regular panics and some are fatal. We use fatal panics in cases where its difficult to panic without leaving something in an inconsistent state. Change the regular panics (channel and timer operations) to be fatal. This makes our behavior more consistent: All bubble violations are always fatal. More importantly, it avoids introducing new, recoverable panics. A motivating example for this change is the context package, which performs channel operations with a mutex held in the expectation that those operations can never panic. These operations can now panic as a result of a bubble violation, potentially leaving a context.Context in an inconsistent state. For golang#74837 Fixes golang#75021 Change-Id: Ie6efd916b7f505c0f13dde42de1572992401f15c Reviewed-on: https://go-review.googlesource.com/c/go/+/696195 Auto-Submit: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Pratt <mpratt@google.com> (cherry picked from commit a8564bd) Reviewed-on: https://go-review.googlesource.com/c/go/+/696196
… FD.Seek for Windows overlapped handles Windows doesn't keep the file pointer for overlapped file handles. To work around this, we keep track of the current offset ourselves and use it on every Read/Write operation. When the user calls File.Seek with whence == io.SeekCurrent, it expects that the offset we keep track of is also accounted for, else the the seek'ed value won't match the file pointer seen by the user. Fixes golang#75083. Change-Id: Ieca7c3779e5349292883ffc293a8474088a4dec7 Reviewed-on: https://go-review.googlesource.com/c/go/+/697275 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> (cherry picked from CL 697275) Reviewed-on: https://go-review.googlesource.com/c/go/+/697995
… IPv4 sockets Accept IPv4-mapped IPv6 destination addresses on IPv4 UDP sockets. Fixes golang#74999. Change-Id: I4624b9b8f861aedcae29e51d5298d23ce1c0f2c7 Reviewed-on: https://go-review.googlesource.com/c/go/+/689976 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Mark Freeman <markfreeman@google.com> Reviewed-by: Damien Neil <dneil@google.com> (cherry picked from commit bdb2d50) Reviewed-on: https://go-review.googlesource.com/c/go/+/695875 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Carlos Amedee <carlos@golang.org>
…otection bypass patterns Fixes golang#75160 Updates golang#75054 Fixes CVE-2025-47910 Change-Id: I6a6a696440c45c450d2cd681f418b01aa0422a60 Reviewed-on: https://go-review.googlesource.com/c/go/+/699276 Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Change-Id: I93a703d161b821cf7a78934f8711416ac6b00485 Reviewed-on: https://go-review.googlesource.com/c/go/+/700736 Auto-Submit: Gopher Robot <gobot@golang.org> TryBot-Bypass: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
…ing synctest specials Avoid racing use of mheap_.specialBubbleAlloc. For golang#75134 Fixes golang#75347 Change-Id: I0c9140c18d2bca1e1c3387cd81230f0e8c9ac23e Reviewed-on: https://go-review.googlesource.com/c/go/+/699255 Reviewed-by: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> (cherry picked from commit 5dcedd6) Reviewed-on: https://go-review.googlesource.com/c/go/+/701797 Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Mark Freeman <markfreeman@google.com> Auto-Submit: Michael Knyszek <mknyszek@google.com>
This test uses method (*UDPConn).WriteMsgUDPAddrPort, which is not supported on Plan 9. The test needs to be skipped, like for example TestAllocs which is already skipped for the same reason. For golang#75017 Fixes golang#75357 Change-Id: Iaa0e6ecdba0938736d8f675fcac43c46db34cb5d Reviewed-on: https://go-review.googlesource.com/c/go/+/696095 Auto-Submit: Damien Neil <dneil@google.com> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> (cherry picked from commit cb814bd) Reviewed-on: https://go-review.googlesource.com/c/go/+/704280 Reviewed-by: Mark Freeman <markfreeman@google.com> Auto-Submit: Michael Knyszek <mknyszek@google.com>
…enced through interfaces Delve and viewcore use DWARF type DIEs to display and explore the runtime value of interface variables. This has always been slightly problematic since the runtime type of an interface variable might only be reachable through interfaces and thus be missing from debug_info (see issue golang#46670). Prior to commit f4de2ec this was not a severe problem since a struct literal caused the allocation of a struct into an autotemp variable, which was then used by dwarfgen to make sure that the DIE for that type would be generated. After f4de2ec such autotemps are no longer being generated and go1.25.0 ends up having many more instances of interfaces with unreadable runtime type (go-delve/delve#4080). This commit fixes this problem by scanning the relocation of the function symbol and adding to the function's DIE symbol references to all types used by the function to create interfaces. Fixes go-delve/delve#4080 Updates golang#46670 Fixes golang#75255 Change-Id: I3e9db1c0d1662905373239816a72604ac533b09e Reviewed-on: https://go-review.googlesource.com/c/go/+/696955 Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Michael Pratt <mpratt@google.com> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Than McIntosh <thanm@golang.org> Reviewed-by: Florian Lehner <lehner.florian86@gmail.com> (cherry picked from commit 8003858) Reviewed-on: https://go-review.googlesource.com/c/go/+/704335 Reviewed-by: Alessandro Arzilli <alessandro.arzilli@gmail.com> Auto-Submit: Michael Knyszek <mknyszek@google.com>
…tory creation No tests were added, because in order to reproduce, the directory would have to be created precisely between the rootOpenDir and mkdirat calls, which is impossible to do in a test. Fixes golang#75116 Change-Id: I6f86a5b33c87452c35728318eaf2169a7534ef37 Reviewed-on: https://go-review.googlesource.com/c/go/+/698215 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Sean Liao <sean@liao.dev> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Carlos Amedee <carlos@golang.org> Auto-Submit: Sean Liao <sean@liao.dev> (cherry picked from commit a076f49) Reviewed-on: https://go-review.googlesource.com/c/go/+/700655 Reviewed-by: Mark Freeman <markfreeman@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
….OpenRoot Set the Name for a Root created within a Root to be the concatenation of the parent's path and the name used to open the child. This matches the behavior for files opened within a Root with Root.Open. For golang#73868 Fixes golang#75139 Change-Id: Idf4021602ac25556721b7ef6924dec652c7bf4db Reviewed-on: https://go-review.googlesource.com/c/go/+/698376 Reviewed-by: Alan Donovan <adonovan@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> (cherry picked from commit ed7f804) Reviewed-on: https://go-review.googlesource.com/c/go/+/704277 Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Damien Neil <dneil@google.com>
…lyNewDRBG generic We are re-sealing the .zip file anyway for another reason, might as well take the opportunity to remove the fips140.Hash type indirection. Updates golang#75524 Change-Id: I6a6a6964fdb312cc2c64e327f845c398c0f6279b Reviewed-on: https://go-review.googlesource.com/c/go/+/706716 TryBot-Bypass: Filippo Valsorda <filippo@golang.org> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Junyang Shao <shaojunyang@google.com>
… version to "v1.0.0" We are re-sealing the .zip file anyway for another reason, might as well take the opportunity to fix the "v1.0" mistake. Note that the actual returned version change will happen when re-sealing the .zip, as the latest mkzip.go will inject "v1.0.0" instead of "v1.0". This reapplies CL 701518, reverted in CL 702255. Updates golang#75524 Change-Id: Ib5b3721bda35c32dd48293b3d1193c12661662dd Reviewed-on: https://go-review.googlesource.com/c/go/+/706717 Reviewed-by: Roland Shoemaker <roland@golang.org> TryBot-Bypass: Filippo Valsorda <filippo@golang.org> Reviewed-by: Junyang Shao <shaojunyang@google.com>
…Ts, make keygen PCTs fatal CMVP clarified with the September 2nd changes to IG 10.3.A that PCTs don't need to run on imported keys. However, PCT failure must enter the error state (which for us is fatal). Thankfully, now that PCTs only run on key generation, we can be assured they will never fail. This change should only affect FIPS 140-3 mode. While at it, make the CAST/PCT testing more robust, checking TestConditional is terminated by a fatal error (and not by t.Fatal). Updates golang#75524 Updates golang#74947 Updates golang#69536 Change-Id: I6a6a696439e1560c10f3cce2cb208fd40c5bc641 Reviewed-on: https://go-review.googlesource.com/c/go/+/706718 TryBot-Bypass: Filippo Valsorda <filippo@golang.org> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Junyang Shao <shaojunyang@google.com>
Exceptionally, we decided to make a compliance-related change following CMVP's updated Implementation Guidance on September 2nd. The Security Policy will be updated to reflect the new zip hash. mkzip.go has been modified to accept versions of the form vX.Y.Z-hash, where the -hash suffix is ignored for fips140.Version() but used to name the zip file and the unpacked cache directory. The new zip is generated with go run ../../src/cmd/go/internal/fips140/mkzip.go -b c2097c7 v1.0.0-c2097c7c from c2097c7 which is the current release-branch.go1.24 head. The full diff between the zip file contents is included below. Fixes golang#75524 For golang#74947 Updates golang#69536 $ diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/cast.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/cast.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/cast.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/cast.go 1980-01-10 00:00:00.000000000 +0100 @@ -56,9 +56,10 @@ } // PCT runs the named Pairwise Consistency Test (if operated in FIPS mode) and -// returns any errors. If an error is returned, the key must not be used. +// aborts the program (stopping the module input/output and entering the "error +// state") if the test fails. // -// PCTs are mandatory for every key pair that is generated/imported, including +// PCTs are mandatory for every generated (but not imported) key pair, including // ephemeral keys (which effectively doubles the cost of key establishment). See // Implementation Guidance 10.3.A Additional Comment 1. // @@ -66,17 +67,23 @@ // // If a package p calls PCT during key generation, an invocation of that // function should be added to fipstest.TestConditionals. -func PCT(name string, f func() error) error { +func PCT(name string, f func() error) { if strings.ContainsAny(name, ",#=:") { panic("fips: invalid self-test name: " + name) } if !Enabled { - return nil + return } err := f() if name == failfipscast { err = errors.New("simulated PCT failure") } - return err + if err != nil { + fatal("FIPS 140-3 self-test failed: " + name + ": " + err.Error()) + panic("unreachable") + } + if debug { + println("FIPS 140-3 PCT passed:", name) + } } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdh/ecdh.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdh/ecdh.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdh/ecdh.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdh/ecdh.go 1980-01-10 00:00:00.000000000 +0100 @@ -161,6 +161,27 @@ if err != nil { continue } + + // A "Pairwise Consistency Test" makes no sense if we just generated the + // public key from an ephemeral private key. Moreover, there is no way to + // check it aside from redoing the exact same computation again. SP 800-56A + // Rev. 3, Section 5.6.2.1.4 acknowledges that, and doesn't require it. + // However, ISO 19790:2012, Section 7.10.3.3 has a blanket requirement for a + // PCT for all generated keys (AS10.35) and FIPS 140-3 IG 10.3.A, Additional + // Comment 1 goes out of its way to say that "the PCT shall be performed + // consistent [...], even if the underlying standard does not require a + // PCT". So we do it. And make ECDH nearly 50% slower (only) in FIPS mode. + fips140.PCT("ECDH PCT", func() error { + p1, err := c.newPoint().ScalarBaseMult(privateKey.d) + if err != nil { + return err + } + if !bytes.Equal(p1.Bytes(), privateKey.pub.q) { + return errors.New("crypto/ecdh: public key does not match private key") + } + return nil + }) + return privateKey, nil } } @@ -188,28 +209,6 @@ panic("crypto/ecdh: internal error: public key is the identity element") } - // A "Pairwise Consistency Test" makes no sense if we just generated the - // public key from an ephemeral private key. Moreover, there is no way to - // check it aside from redoing the exact same computation again. SP 800-56A - // Rev. 3, Section 5.6.2.1.4 acknowledges that, and doesn't require it. - // However, ISO 19790:2012, Section 7.10.3.3 has a blanket requirement for a - // PCT for all generated keys (AS10.35) and FIPS 140-3 IG 10.3.A, Additional - // Comment 1 goes out of its way to say that "the PCT shall be performed - // consistent [...], even if the underlying standard does not require a - // PCT". So we do it. And make ECDH nearly 50% slower (only) in FIPS mode. - if err := fips140.PCT("ECDH PCT", func() error { - p1, err := c.newPoint().ScalarBaseMult(key) - if err != nil { - return err - } - if !bytes.Equal(p1.Bytes(), publicKey) { - return errors.New("crypto/ecdh: public key does not match private key") - } - return nil - }); err != nil { - panic(err) - } - k := &PrivateKey{d: bytes.Clone(key), pub: PublicKey{curve: c.curve, q: publicKey}} return k, nil } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdsa/cast.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdsa/cast.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdsa/cast.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdsa/cast.go 1980-01-10 00:00:00.000000000 +0100 @@ -51,8 +51,8 @@ } } -func fipsPCT[P Point[P]](c *Curve[P], k *PrivateKey) error { - return fips140.PCT("ECDSA PCT", func() error { +func fipsPCT[P Point[P]](c *Curve[P], k *PrivateKey) { + fips140.PCT("ECDSA PCT", func() error { hash := testHash() drbg := newDRBG(sha512.New, k.d, bits2octets(P256(), hash), nil) sig, err := sign(c, k, drbg, hash) diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdsa/ecdsa.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdsa/ecdsa.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdsa/ecdsa.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdsa/ecdsa.go 1980-01-10 00:00:00.000000000 +0100 @@ -166,11 +166,6 @@ return nil, err } priv := &PrivateKey{pub: *pub, d: d.Bytes(c.N)} - if err := fipsPCT(c, priv); err != nil { - // This can happen if the application went out of its way to make an - // ecdsa.PrivateKey with a mismatching PublicKey. - return nil, err - } return priv, nil } @@ -203,10 +198,7 @@ }, d: k.Bytes(c.N), } - if err := fipsPCT(c, priv); err != nil { - // This clearly can't happen, but FIPS 140-3 mandates that we check it. - panic(err) - } + fipsPCT(c, priv) return priv, nil } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdsa/hmacdrbg.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdsa/hmacdrbg.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/ecdsa/hmacdrbg.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ecdsa/hmacdrbg.go 1980-01-10 00:00:00.000000000 +0100 @@ -121,7 +121,7 @@ // // This should only be used for ACVP testing. hmacDRBG is not intended to be // used directly. -func TestingOnlyNewDRBG(hash func() fips140.Hash, entropy, nonce []byte, s []byte) *hmacDRBG { +func TestingOnlyNewDRBG[H fips140.Hash](hash func() H, entropy, nonce []byte, s []byte) *hmacDRBG { return newDRBG(hash, entropy, nonce, plainPersonalizationString(s)) } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ed25519/cast.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ed25519/cast.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/ed25519/cast.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ed25519/cast.go 1980-01-10 00:00:00.000000000 +0100 @@ -12,8 +12,8 @@ "sync" ) -func fipsPCT(k *PrivateKey) error { - return fips140.PCT("Ed25519 sign and verify PCT", func() error { +func fipsPCT(k *PrivateKey) { + fips140.PCT("Ed25519 sign and verify PCT", func() error { return pairwiseTest(k) }) } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/ed25519/ed25519.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ed25519/ed25519.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/ed25519/ed25519.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/ed25519/ed25519.go 1980-01-10 00:00:00.000000000 +0100 @@ -69,10 +69,7 @@ fips140.RecordApproved() drbg.Read(priv.seed[:]) precomputePrivateKey(priv) - if err := fipsPCT(priv); err != nil { - // This clearly can't happen, but FIPS 140-3 requires that we check. - panic(err) - } + fipsPCT(priv) return priv, nil } @@ -88,10 +85,6 @@ } copy(priv.seed[:], seed) precomputePrivateKey(priv) - if err := fipsPCT(priv); err != nil { - // This clearly can't happen, but FIPS 140-3 requires that we check. - panic(err) - } return priv, nil } @@ -137,12 +130,6 @@ copy(priv.prefix[:], h[32:]) - if err := fipsPCT(priv); err != nil { - // This can happen if the application messed with the private key - // encoding, and the public key doesn't match the seed anymore. - return nil, err - } - return priv, nil } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/fips140.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/fips140.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/fips140.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/fips140.go 1980-01-10 00:00:00.000000000 +0100 @@ -62,6 +62,10 @@ return "Go Cryptographic Module" } +// Version returns the formal version (such as "v1.0.0") if building against a +// frozen module with GOFIPS140. Otherwise, it returns "latest". func Version() string { - return "v1.0" + // This return value is replaced by mkzip.go, it must not be changed or + // moved to a different file. + return "v1.0.0" } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/mlkem/mlkem1024.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/mlkem/mlkem1024.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/mlkem/mlkem1024.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/mlkem/mlkem1024.go 1980-01-10 00:00:00.000000000 +0100 @@ -118,10 +118,7 @@ var z [32]byte drbg.Read(z[:]) kemKeyGen1024(dk, &d, &z) - if err := fips140.PCT("ML-KEM PCT", func() error { return kemPCT1024(dk) }); err != nil { - // This clearly can't happen, but FIPS 140-3 requires us to check. - panic(err) - } + fips140.PCT("ML-KEM PCT", func() error { return kemPCT1024(dk) }) fips140.RecordApproved() return dk, nil } @@ -149,10 +146,6 @@ d := (*[32]byte)(seed[:32]) z := (*[32]byte)(seed[32:]) kemKeyGen1024(dk, d, z) - if err := fips140.PCT("ML-KEM PCT", func() error { return kemPCT1024(dk) }); err != nil { - // This clearly can't happen, but FIPS 140-3 requires us to check. - panic(err) - } fips140.RecordApproved() return dk, nil } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/mlkem/mlkem768.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/mlkem/mlkem768.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/mlkem/mlkem768.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/mlkem/mlkem768.go 1980-01-10 00:00:00.000000000 +0100 @@ -177,10 +177,7 @@ var z [32]byte drbg.Read(z[:]) kemKeyGen(dk, &d, &z) - if err := fips140.PCT("ML-KEM PCT", func() error { return kemPCT(dk) }); err != nil { - // This clearly can't happen, but FIPS 140-3 requires us to check. - panic(err) - } + fips140.PCT("ML-KEM PCT", func() error { return kemPCT(dk) }) fips140.RecordApproved() return dk, nil } @@ -208,10 +205,6 @@ d := (*[32]byte)(seed[:32]) z := (*[32]byte)(seed[32:]) kemKeyGen(dk, d, z) - if err := fips140.PCT("ML-KEM PCT", func() error { return kemPCT(dk) }); err != nil { - // This clearly can't happen, but FIPS 140-3 requires us to check. - panic(err) - } fips140.RecordApproved() return dk, nil } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/rsa/keygen.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/rsa/keygen.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/rsa/keygen.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/rsa/keygen.go 1980-01-10 00:00:00.000000000 +0100 @@ -105,7 +105,28 @@ // negligible chance of failure we can defer the check to the end of key // generation and return an error if it fails. See [checkPrivateKey]. - return newPrivateKey(N, 65537, d, P, Q) + k, err := newPrivateKey(N, 65537, d, P, Q) + if err != nil { + return nil, err + } + + if k.fipsApproved { + fips140.PCT("RSA sign and verify PCT", func() error { + hash := []byte{ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + } + sig, err := signPKCS1v15(k, "SHA-256", hash) + if err != nil { + return err + } + return verifyPKCS1v15(k.PublicKey(), "SHA-256", hash, sig) + }) + } + + return k, nil } } diff -ru golang.org/fips140@v1.0.0/fips140/v1.0.0/rsa/rsa.go golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/rsa/rsa.go --- golang.org/fips140@v1.0.0/fips140/v1.0.0/rsa/rsa.go 1980-01-10 00:00:00.000000000 +0100 +++ golang.org/fips140@v1.0.0-c2097c7c/fips140/v1.0.0-c2097c7c/rsa/rsa.go 1980-01-10 00:00:00.000000000 +0100 @@ -310,26 +310,6 @@ return errors.New("crypto/rsa: d too small") } - // If the key is still in scope for FIPS mode, perform a Pairwise - // Consistency Test. - if priv.fipsApproved { - if err := fips140.PCT("RSA sign and verify PCT", func() error { - hash := []byte{ - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, - 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, - 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, - } - sig, err := signPKCS1v15(priv, "SHA-256", hash) - if err != nil { - return err - } - return verifyPKCS1v15(priv.PublicKey(), "SHA-256", hash, sig) - }); err != nil { - return err - } - } - return nil } Change-Id: I6a6a6964b1780f19ec2b5202052de58b47d9342c Reviewed-on: https://go-review.googlesource.com/c/go/+/701520 Reviewed-by: Junyang Shao <shaojunyang@google.com> Auto-Submit: Filippo Valsorda <filippo@golang.org> Commit-Queue: Junyang Shao <shaojunyang@google.com> Reviewed-by: Roland Shoemaker <roland@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-on: https://go-review.googlesource.com/c/go/+/706719
* runtime: wrap procyield assembly and check for 0, make procyieldAsm no longer loop infinitely if passed 0 Reviewed-on: https://go-review.googlesource.com/c/go/+/712663 Reviewed-on: https://go-review.googlesource.com/c/go/+/712664 --------- Co-authored-by: Michael Anthony Knyszek <mknyszek@google.com>
* add disassembly support for zacas
Co-authored-by: 文昌平10295505 <wen.changping@zte.com.cn>
…n riscv64 (#105) * cmd/compile/internal/ssa: enable unalign memory access optimization by input MisalignedFast optional extension
…107) * use zicond to optimize p256cmov
…ts on riscv64 (#102) On RISC-V the JAL and JALR instructions provide Return Address Stack(RAS) prediction hints based on the registers used (as per section 2.5.1 of the RISC-V ISA manual). When a JALR instruction uses X1 or X5 as the source register, it hints that a pop should occur. When making a function call, avoid the use of X5 as a source register since this results in the RAS performing a pop-then-push instead of a push, breaking call/return pairing and significantly degrading front-end branch prediction performance. Based on test result of golang.org/x/benchmarks/json on SpacemiT K1, fix version has a performance improvement of about 7% Fixes golang#76654 Change-Id: I867c8d7cfb54f5decbe176f3ab3bb3d78af1cf64 Co-authored-by: wangboyao <wangboyao@bytedance.com>
…cess is fast (#110) Previously, CanMergeLoads was hardcoded to false for riscv64. This prevented the inliner from recognizing that encoding/binary and internal/byteorder functions could be lowered to a single instruction on modern RISC-V hardware. This change ties CanMergeLoads to buildcfg.GORISCV64EXT.MisalignedFast, aligning it with the unalignedOK state. When fast misaligned access is available (e.g., via "GORISCV64=rva23u64,misaligned_fast"): The inliner now treats Uint64/Uint32 operations as "cheap", promoting inlining of byte-order sensitive code. The SSA backend continues to merge contiguous memory accesses into single wide instructions. This synergistic optimization reduces function call overhead and leverages hardware capabilities to improve performance on high-end RISC-V cores while maintaining safe, conservative behavior on baseline hardware. Benchmark results show significant performance improvement in the benchmark suite. For example, in the LZ benchmark from github.com/flanglet/kanzi-go/benchmark: goos: linux goarch: riscv64 cpu: SG2044 pkg: github.com/flanglet/kanzi-go/benchmark │ kanzi_rv_LZ_nomergeload-0204.txt │ kanzi_rv_LZ_mergeload-0204.txt │ │ sec/op │ sec/op vs base │ LZ 3.957m ± 1% 2.868m ± 8% -27.54% (p=0.000 n=10) Updates #105
Co-authored-by: 文昌平10295505 <wen.changping@zte.com.cn>
* Fix bug: x509: certificate has expired * Restore modifications to 'RSA Testing' * net/smtp: prevent test failures due to expired test certificate The current localhostCert used for testing seems to have its expiry date mistakenly set to Mar 18 19:27:54 2026 GMT. To prevent test failures, use fixed time in tests. Also, regenerate the certificate so we can fix the time to UNIX epoch (the current certificate is only valid after Mar 18 2025). Fixes golang#77504 Change-Id: I3136d29eaa0c8c4361f5627003f08a0059702f0d Reviewed-on: https://go-review.googlesource.com/c/go/+/744260 Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Nicholas Husin <husin@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> --------- Co-authored-by: cuitiankai10342768 <cui.tiankai@zte.com.cn> Co-authored-by: Nicholas S. Husin <nsh@golang.org>
… on riscv64 (#113) enable bit swap when riscv profile >= 22
Co-authored-by: cuitiankai10342768 <cui.tiankai@zte.com.cn>
Fixes golang#77720 Add a generic SSA rewrite that forwards `Load` from a `Move` destination back to the `Move` source when it is provably safe, so field reads like `s.h.Value().typ` don’t force a full struct copy. - Add `Load <- Move` rewrite in `generic.rules` with safety guard: non-volatile source - Tweak `fixedbugs/issue22200*` so that it can still trigger the "stack frame too large" error. - Regenerate `rewritegeneric.go`. - Add `test/codegen/moveload.go` to assert no `MOVUPS` and direct `MOVBLZX` in both direct and inlined forms. Benchmark results (linux/amd64, i7-14700KF): $ go test cmd/compile/internal/test -run='^$' -bench='MoveLoad' -count=20 Before: BenchmarkMoveLoadTypViaValue-20 ~76.9 ns/op BenchmarkMoveLoadTypViaPtr-20 ~1.97 ns/op After: BenchmarkMoveLoadTypViaValue-20 ~1.894 ns/op BenchmarkMoveLoadTypViaPtr-20 ~1.905 ns/op The rewrite removes the redundant struct copy in `s.h.Value().typ`, bringing it in line with the direct pointer form. Change-Id: Iddf2263e390030ba013e0642a695b87c75f899da Reviewed-on: https://go-review.googlesource.com/c/go/+/748200 Reviewed-by: Keith Randall <khr@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org> Auto-Submit: Keith Randall <khr@golang.org> Reviewed-by: Mark Freeman <markfreeman@google.com>
newborn22
requested review from
BoyaoWang430,
ctk-1998,
lxq015,
wangpc-pp and
wenchangping
May 18, 2026 06:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related Issue(s) & Descriptions
ref: https://go-review.googlesource.com/c/go/+/748200
Fixes golang#77720
Add a generic SSA rewrite that forwards
Loadfrom aMovedestination back to theMovesource when it is provably safe, so field reads likes.h.Value().typdon’t force a full struct copy.Load <- Moverewrite ingeneric.ruleswith safety guard: non-volatile sourcefixedbugs/issue22200*so that it can still trigger the "stack frame too large" error.rewritegeneric.go.test/codegen/moveload.goto assert noMOVUPSand directMOVBLZXin both direct and inlined forms.Benchmark results (linux/amd64, i7-14700KF):
$ go test cmd/compile/internal/test -run='^$' -bench='MoveLoad' -count=20
Before:
BenchmarkMoveLoadTypViaValue-20 ~76.9 ns/op
BenchmarkMoveLoadTypViaPtr-20 ~1.97 ns/op
After:
BenchmarkMoveLoadTypViaValue-20 ~1.894 ns/op
BenchmarkMoveLoadTypViaPtr-20 ~1.905 ns/op
The rewrite removes the redundant struct copy in
s.h.Value().typ, bringing it in line with the direct pointer form.Change-Id: Iddf2263e390030ba013e0642a695b87c75f899da
Reviewed-on: https://go-review.googlesource.com/c/go/+/748200
Reviewed-by: Keith Randall khr@google.com
LUCI-TryBot-Result: Go LUCI golang-scoped@luci-project-accounts.iam.gserviceaccount.com
Reviewed-by: Keith Randall khr@golang.org
Auto-Submit: Keith Randall khr@golang.org
Reviewed-by: Mark Freeman markfreeman@google.com
Checklist