crypto/x509/pkix: avoid quadratic string concatenation in RDNSequence.String#78265
crypto/x509/pkix: avoid quadratic string concatenation in RDNSequence.String#78265nsknv wants to merge 1 commit intogolang:masterfrom
Conversation
|
This PR (HEAD: 90b83e4) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/757680. Important tips:
|
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Navtej Kathuria US: Patch Set 1: Code-Review+1 (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Daniel McCarney: Patch Set 1: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
90b83e4 to
989d61d
Compare
|
This PR (HEAD: 989d61d) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/757680. Important tips:
|
|
Message from Navtej Kathuria US: Patch Set 1: Code-Review+1 (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Daniel McCarney: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
989d61d to
b0706c2
Compare
….String RDNSequence.String builds its result using repeated s += ... inside nested loops, leading to O(N²) time and memory complexity. A certificate with many Subject or Issuer RDN entries can therefore cause excessive CPU and memory usage when String is called. Switch to strings.Builder to construct the output, reducing complexity to O(N) without changing behavior. This follows the same approach used to fix CVE-2025-61729 (HostnameError.Error), which addressed the same quadratic concatenation pattern.
|
This PR (HEAD: b0706c2) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/757680. Important tips:
|
|
Message from Navtej Kathuria US: Patch Set 3: Code-Review+1 (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Daniel McCarney: Patch Set 3: Code-Review+2 Commit-Queue+1 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Go LUCI: Patch Set 3: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2026-03-26T21:55:51Z","revision":"92afdaa73abff50de3ae2dda894e7d9e027e2631"} Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Roland Shoemaker: Patch Set 3: Code-Review+2 Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Daniel McCarney: Patch Set 3: -Commit-Queue (Performed by <GERRIT_ACCOUNT_60063> on behalf of <GERRIT_ACCOUNT_26879>) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Go LUCI: Patch Set 3: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Go LUCI: Patch Set 3: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Navtej Kathuria US: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Navtej Kathuria US: Patch Set 3: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Mateusz Poliwczak: Patch Set 3: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Mateusz Poliwczak: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
Message from Mateusz Poliwczak: Patch Set 3: Auto-Submit+1 Code-Review+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
….String RDNSequence.String builds its result using repeated s += ... inside nested loops, leading to O(N²) time and memory complexity. A certificate with many Subject or Issuer RDN entries can therefore cause excessive CPU and memory usage when String is called. Switch to strings.Builder to construct the output, reducing complexity to O(N) without changing behavior. This follows the same approach used to fix CVE-2025-61729 (HostnameError.Error), which addressed the same quadratic concatenation pattern. Change-Id: Id44303b5732081de9f01d186bc2b8ac66349a650 GitHub-Last-Rev: b0706c2 GitHub-Pull-Request: #78265 Reviewed-on: https://go-review.googlesource.com/c/go/+/757680 Reviewed-by: Navtej Kathuria US <nkathuria@nvidia.com> Reviewed-by: Daniel McCarney <daniel@binaryparadox.net> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Mateusz Poliwczak <mpoliwczak34@gmail.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Mateusz Poliwczak <mpoliwczak34@gmail.com>
|
Message from Junyang Shao: Patch Set 3: Code-Review+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/757680. |
|
This PR is being closed because golang.org/cl/757680 has been merged. |
|
PR is merged, reference: 493731943 |
RDNSequence.String builds its result using repeated s += ... inside
nested loops, leading to O(N²) time and memory complexity.
A certificate with many Subject or Issuer RDN entries can therefore
cause excessive CPU and memory usage when String is called.
Switch to strings.Builder to construct the output, reducing complexity
to O(N) without changing behavior.
This follows the same approach used to fix CVE-2025-61729
(HostnameError.Error), which addressed the same quadratic concatenation
pattern.