Enforcing Control Flow Integrity on DeFi Smart Contracts