Camp - Re-Audit

QuantstampCode version: not recorded (see the report)

Audit · firm’s term: re-audit

Version of Camp: counted once with it

Quantstamp reviewed Camp (Camp - Re-Audit) on 14 Aug 2025: 5 findings, 0 critical; 4 marked fixed, 1 open.

No open critical findings
Open the reportOpen Camp’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings5

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium001
Low103
MediumGriefing Users Can Cause Deposits to Fail on the Destination Chain Due to Lack of Minimum `_gaslimit` ValidationFixed

The `bridgeOut()` and `release()` functions allow the caller to specify a `_gaslimit` argument. This value is the maximum amount of gas units the executor should use on the destination chain when completing the bridge. However, in the case of the `CampTimelockEscrow` contract, there is never any validation that some minimum amount of gas is available on the destination chain to ensure the bridge transaction is successful. Therefore, User A could process User B's deposit via the `release()` function, specifying a very small `_gaslimit`, causing the transaction to fail on the destination chain. This means the affected user would have directly to call the `lzReceive()` function on the target chain's implementation of the Camp OFT contract in order to complete their bridge action successfully.

LowBridge Token Refund Address May Lock Refunded Tokens in EscrowFixed

In the `_bridgeNativeTokens` function, the LayerZero `nativeOFTAdapter.send` call uses `address(this)` (the `CampTimelockEscrow` contract) as the refund address. This can result in refunded tokens becoming stuck in the escrow contract instead of being returned to the intended recipient.

LowMissing Recipient Address ValidationFixed

In `bridgeOut()`, the `_to` parameter specifies the recipient address. However, there is no check to ensure `_to` is not the zero address.

LowStrict Equality Check for `_fee.nativeFee` May Cause Soft DosFixed

The `release()` function contains the following check to ensure the user provides the necessary LayerZero fees: ```solidity if (msg.value != _fee.nativeFee) revert InvalidNativeBridgeDeposit(); ``` However, due to the dynamic nature of LayerZero fees, it may be difficult for the frontend to accurately predict what the exact fee will be when the transaction is executed. This may lead to a soft DoS where users' transactions unexpectedly fail due to slight changes in the LayerZero fee.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Part of Camp’s security record

Camp
Audits3 audits by 1 firmLast audit Sep 2025, by Quantstamp.
Critical findingsNo open critical findingsAcross 3 reports.
Open Camp’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us