AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 32 Bitcoin

sendpay: ignore unknown `route` fields, but take the `getroutes`-style ones.

Public commit record

What the developer wrote

Authored by Rusty Russell

73/100 · Adequate
sendpay: ignore unknown `route` fields, but take the `getroutes`-style ones.

Changelog-Added: JSON-RPC: `sendpay` now accepts one of the `paths` returned from `getroutes` as its `route` parameter.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
The short version

What changed, and why it matters

This commit updates the Core Lightning `sendpay` RPC command so it can accept route objects produced by the newer `getroutes` command, in addition to the older `getroute` format. It makes several route fields optional and adds aliases (for example, `short_channel_id_dir` as a newer name for `channel`). The change is primarily an API compatibility and feature enhancement. There is no direct evidence in the commit that this fixes a security vulnerability, but loosening input validation and making previously required fields optional can sometimes hide or introduce edge-case bugs, so it warrants a conservative defensive review.

Recommended action

Review the updated `sendpay` route parsing logic in `lightningd/pay.c` to confirm that optional/aliased fields are validated consistently and that missing critical fields (e.g., amount, channel/node identifier, CLTV) are rejected before any payment state is committed. Also verify that the generated gRPC/Rust `.unwrap()` conversions do not introduce panic paths for malformed optional values, and add regression tests for incomplete or conflicting route objects.

Security signals we found

01

Input schema relaxed: route hop fields changed from required to optional

02

Unknown route fields are explicitly ignored by `sendpay`

03

New aliases for existing route fields introduced (`short_channel_id_dir`/`channel`, `node_id_out`/`id`, `cltv_out`/`delay`, `amount_out_msat`/`amount_msat`)

04

No explicit security relevance, CVE, or vulnerability disclosure in commit message or diff

05

Generated gRPC/Rust conversion code now uses `.unwrap()` on optional parsed fields, which could panic on malformed input if validation is insufficient

Risk score

Why this scored 32/100

Our methodology →
Potential impact 5/30
Exploitability 5/25
Stealth signal 5/15
Affected reach 10/15
Confidence 4/10
Evidence quality 3/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.