ClearingHouse::addEngine() initializes productEngine, so it may be frontrunned and someone initializes productEngine instead
Description
ClearingHouse::addEngine() initializes productEngine, which means it is uninitialized prior to the call. Thus, someone may spot the uninitialized productEngine proxy and initialize it themselves, making the addEngine() call revert.
Recommendation
Send the productEngine creation and ClearingHouse::addEngine() atomically, via a multicall or custom contract deployer.
Status
Acknowledged