function handleReallocation(
    uint256 campaignId,
    address userAddress,
    address toToken,
    uint256 toAmount,
    bytes calldata data
) external payable whenNotPaused(campaignId) onlyRole(SWAP_CALLER_ROLE) {
    Campaign storage campaign = campaigns[campaignId];
    
    // No validation that campaign exists!
    
    if (toToken != campaign.targetToken) {
        revert InvalidToTokenReceived(toToken);
    }
    
    // If campaign doesn't exist, campaign.targetToken will be address(0)
    // Further operations would use default zero values
    // ...
}
function handleReallocation(
    uint256 campaignId,
    address userAddress,
    address toToken,
    uint256 toAmount,
    bytes calldata data
) external payable whenNotPaused(campaignId) onlyRole(SWAP_CALLER_ROLE) {
    Campaign storage campaign = campaigns[campaignId];
    
    // Verify the campaign exists before proceeding
    if (campaign.targetToken == address(0)) {
        revert CampaignDoesNotExist();
    }
    
    if (toToken != campaign.targetToken) {
        revert InvalidToTokenReceived(toToken);
    }
    
    // Continue with existing implementation
    // ...
}
