Skip to content

bls: Guard null contribution verification vector - #1926

Draft
navidR wants to merge 1 commit into
firoorg:masterfrom
navidR:dev/navidr/dkg-null-verification-vector
Draft

bls: Guard null contribution verification vector#1926
navidR wants to merge 1 commit into
firoorg:masterfrom
navidR:dev/navidr/dkg-null-verification-vector

Conversation

@navidR

@navidR navidR commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Reject DKG contribution-share verification when its verification vector is missing. This prevents a null dereference and deterministic node crash during DKG processing.

@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@reubenyap

Copy link
Copy Markdown
Member

@CodeAnt-AI review

@codeant-ai

codeant-ai Bot commented Aug 29, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR 839c76d Aug 29, 2026 · 10:15 10:17

@codeant-ai codeant-ai Bot added the size:S This PR changes 10-29 lines, ignoring generated files label Aug 29, 2026
@codeant-ai

codeant-ai Bot commented Aug 29, 2026

Copy link
Copy Markdown

User description

Reject DKG contribution-share verification when its verification vector is missing. This prevents a null dereference and deterministic node crash during DKG processing.


CodeAnt-AI Description

Prevent crashes when verifying DKG contributions with a missing verification vector

What Changed

  • Missing contribution verification vectors are rejected as failed verification instead of being dereferenced and crashing the node
  • Added coverage for contribution-share verification with a null verification vector

Impact

✅ Prevented remote-triggered node crashes during DKG processing
✅ Clear failed verification result for missing contribution data

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Comment thread src/bls/bls_worker.cpp
// received (e.g. a non-member observer that did not get the member's QCONTRIB).
// Dereferencing it here is a remote-triggerable crash; treat a missing vvec as a
// failed verification, mirroring the null check in VerifyVerificationVectors().
if (!forId.IsValid() || vvec == nullptr || !VerifyVerificationVector(*vvec)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The full VerifyVerificationVector scan now runs synchronously before the job is submitted, so this method is no longer asynchronous for valid inputs. CDKGSession::VerifyJustification invokes it once per contribution while processing a received justification, causing the same verification vector to be revalidated repeatedly on the message-processing thread and allowing a large vector to block that thread. Keep the null/ID guard synchronous, but perform vector validation inside the worker task or rely on the validation already performed when the contribution was received. [performance]

Severity Level: Major ⚠️
- ⚠️ DKG justification handling rescans vectors synchronously.
- ⚠️ Multiple contributions multiply message-thread validation cost.
- ⚠️ Large vectors can delay subsequent DKG messages.

Use CodeAnt Skill Fix in Cursor Fix in VSCode Claude

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** src/bls/bls_worker.cpp
**Line:** 762:762
**Comment:**
	*Performance: The full `VerifyVerificationVector` scan now runs synchronously before the job is submitted, so this method is no longer asynchronous for valid inputs. `CDKGSession::VerifyJustification` invokes it once per contribution while processing a received justification, causing the same verification vector to be revalidated repeatedly on the message-processing thread and allowing a large vector to block that thread. Keep the null/ID guard synchronous, but perform vector validation inside the worker task or rely on the validation already performed when the contribution was received.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

@reubenyap reubenyap left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I traced the null-vector case from DKG justification handling through the asynchronous verifier. Short-circuit evaluation now rejects the null pointer before dereference and returns the same resolved false future used for other invalid inputs. The full vector validation flagged elsewhere already existed before this PR, so it is not a regression here. The focused test and full CI matrix are green; I found no actionable defect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants