Program Interface Compliance
Detects program interface compliance issues.
Program Interface Compliance
Overview
The program interface compliance detector identifies programs that do not follow common interface patterns including functions that do not properly handle return values, missing exit/return statements, inconsistent control flow patterns, and non-standard error handling. These issues affect client library generation and interoperability.
For remediation guidance, see Program Interface Compliance Remediation.
Why This Is an Issue
Program interfaces (instruction structures, account ordering, error codes) are critical for client library generation and cross-program interoperability. Non-standard interfaces make it difficult for other programs and frontends to interact correctly, leading to integration failures and reduced composability in the Solana ecosystem.
How to Resolve
Before (Vulnerable)
// Non-standard: inconsistent return handling
pub fn process(accounts: &[AccountInfo]) -> ProgramResult {
if some_condition {
do_something(accounts); // Missing ? and return
}
do_other_thing(accounts)
}
After (Fixed)
// Fixed: consistent return handling
pub fn process(accounts: &[AccountInfo]) -> ProgramResult {
if some_condition {
return do_something(accounts);
}
do_other_thing(accounts)
}
Example JSON Finding
{
"detector": "program-interface-compliance",
"severity": "low",
"confidence": 0.5,
"message": "Inconsistent return handling pattern detected",
"location": { "function": "process", "block": 0, "statement": 3 }
}
Detection Methodology
- Return pattern analysis: Verifies consistent return/exit patterns across function paths.
- Function naming conventions: Checks for standard naming patterns in instruction handlers.
- Error code consistency: Verifies error types follow standard patterns.
Limitations
False positives: Intentionally non-standard patterns for specific protocol requirements. False negatives: Semantic interface issues beyond syntactic patterns.
Related Detectors
- SPL Token Compliance — token standard compliance
- Anchor IDL Mismatch — IDL consistency