Pod.setManager() checks validity of wrong address
The function `Pod.setManager()` allows the `owner` of the Pod contract to change the Pod's `manager`. It checks that the value of the existing `manager` in storage is nonzero. This is presumably intended to ensure that the `owner` has provided a valid `newManager` parameter in calldata.\\nThe current check will always pass once the contract is initialized with a nonzero `manager`. But, the contract can currently be initialized with a `manager` of `IPodManager(address(0))`. In this case, the check would prevent the `manager` from ever being updated.\\n```\\nfunction setManager(IPodManager newManager)\\n    public\\n    virtual\\n    onlyOwner\\n    returns (bool)\\n{\\n    // Require Valid Address\\n    require(address(manager) != address(0), "Pod:invalid-manager-address");\\n```\\n
Change the check to:\\n```\\nrequire(address(newManager) != address(0), "Pod:invalid-manager-address");\\n```\\n\\nMore generally, attempt to define validity criteria for all input values that are as strict as possible. Consider preventing zero inputs or inputs that might conflict with other addresses in the smart contract system altogether, including in contract initialization functions.
```\\nfunction setManager(IPodManager newManager)\\n    public\\n    virtual\\n    onlyOwner\\n    returns (bool)\\n{\\n    // Require Valid Address\\n    require(address(manager) != address(0), "Pod:invalid-manager-address");\\n```\\n