ssh: fix incorrect operator order Arithmetic is incorrectly applied to 'byte' instead of 'int' resulting in a possible overflow that allows for a panic. Fixes CVE-2026-46597 Fixes golang/go#79561 Change-Id: I83edabeeda676f0209d29d5e2554890bbd0eef8f Reviewed-on: https://go-review.googlesource.com/c/crypto/+/781620 Reviewed-by: Roland Shoemaker <roland@golang.org> Auto-Submit: Gopher Robot <gobot@golang.org> Reviewed-by: Nicholas Husin <nsh@golang.org> Reviewed-by: Nicholas Husin <husin@google.com> LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/ssh/cipher.go b/ssh/cipher.go index ad2b370..48d0199 100644 --- a/ssh/cipher.go +++ b/ssh/cipher.go
@@ -407,7 +407,7 @@ return nil, fmt.Errorf("ssh: illegal padding %d", padding) } - if int(padding+1) >= len(plain) { + if int(padding)+1 >= len(plain) { return nil, fmt.Errorf("ssh: padding %d too large", padding) } plain = plain[1 : length-uint32(padding)]