Conversation
Signed-off-by: GHkrishna <krishna@parity.io>
Signed-off-by: GHkrishna <krishna@parity.io>
Signed-off-by: GHkrishna <krishna@parity.io>
Signed-off-by: GHkrishna <krishna@parity.io>
Signed-off-by: GHkrishna <krishna@parity.io>
Signed-off-by: GHkrishna <krishna@parity.io>
Signed-off-by: GHkrishna <krishna@parity.io>
Contributor
CI Summary
|
re-gius
reviewed
Sep 16, 2026
re-gius
left a comment
Collaborator
There was a problem hiding this comment.
Implementations looks solid, just a few comments on docs and tests
Signed-off-by: GHkrishna <krishna@parity.io>
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.
Description
Three low severity findings from the internal audit, grouped together.
Subname paths now have a length limit.
isNamePathchecked that each dot separated segment was at most 63 octets but never checked the path as a whole, so a caller could build an arbitrarily longparentLabelout of legal segments.setSubnodeOwnerstores the resulting full name in the new owner'sLabelStore, and that row cannot be deleted, so the text sat there permanently and made every enumeration that reads it back more expensive. The path is now capped at 255 octets, which is the DNS wire format ceiling. A path over that limit reverts withParentLabelMismatch, same as a malformed one. Nothing live comes close: real parent paths are one or two labels.CI now enforces the live manifest rule.
CONTRIBUTING.mdsays a code PR must not editdeployments/<network>/<chainId>.json, because those files are records of what is actually deployed and they ship straight into thedeployments.jsonrelease asset. The CREATE3 parity gates comparedeployments/expected.jsoninstead, so nothing was checking the live files. A new job inrelease-metadata.ymlfails a PR that touches one, unless the PR carries thedeployment-recordlabel, which is what a real deploy uses.setOwnernow mentions subnames. The comment onsetOwnerwarned that a name sold directly keeps the seller's resolver pointer until the buyer overwrites it. That is true for the node itself but not for anything under it: a subname stores its own owner andisAuthorisedreturns on that before it looks at the registrar, so the seller keeps write access to every subname they created until the buyer reassigns each one. Someone acting on the old wording would clean up the node and think the name was clear. Added to both the implementation and the interface.Type
Scope
Related Issues
Internal security audit, low severity findings.
Fixes
Checklist
Code
forge buildpassesforge testpassesTesting
Security
selfdestructordelegatecallDocumentation
Breaking Changes
How to test
Notes
The length cap makes the injection cheaper to live with, it does not close it. Anyone holding a node can still name someone else as a subnode owner and push an undeletable row into their store. What changed is that the row is now bounded at roughly 320 octets instead of being unbounded, so the cost of reading it back is in the same range as a genuine row. Closing it properly means one of three things( they are design decisions though tbh): require the caller to be the subnode's new owner on the persist branch, give
LabelStorean owner callable removal, or bound the scan inDotnsPopLenswith a resumable cursor.The
deployment-recordlabel has to exist in the repo before the new CI job is useful, otherwise a legitimate deploy PR has no way through.The audit also flagged that the release workflows hold deployment keys with no environment gate. That one needs a GitHub environment set up before the workflow change means anything, so it is not inc in this PR.