Lack of Governance action to update registered emitters
The Wormhole CCTP integration contract currently exposes a function `Governance::registerEmitterAndDomain` to register an emitter address and its corresponding CCTP domain on the given foreign chain; however, no such function currently exists to update this state. Any mistake made when registering the emitter and CCTP domain is irreversible unless an upgrade is performed on the entirety of the integration contract itself. Deployment of protocol upgrades comes with its own risks and should not be performed as a necessary fix for trivial human errors. Having a separate governance action to update the emitter address, foreign chain identifier, and CCTP domain is a preferable pre-emptive measure against any potential human errors.\\n```\\nfunction registerEmitterAndDomain(bytes memory encodedVaa) public {\\n    /* snip: parsing of Governance VAA payload */\\n\\n    // Set the registeredEmitters state variable.\\n    registeredEmitters[foreignChain] = foreignAddress;\\n\\n    // update the chainId to domain (and domain to chainId) mappings\\n    getChainToDomain()[foreignChain] = cctpDomain;\\n    getDomainToChain()[cctpDomain] = foreignChain;\\n}\\n```\\n
The addition of a `Governance::updateEmitterAndDomain` function is recommended to allow Governance to more easily respond to any issues with the registered emitter state.
In the event an emitter is registered with an incorrect foreign chain identifier or CCTP domain, then a protocol upgrade will be required to mitigate this issue. As such, the risks associated with the deployment of protocol upgrades and the potential time-sensitive nature of this issue designate a low severity issue.\\nProof of Concept:\\nA Governance VAA erroneously registers an emitter with the incorrect foreign chain identifier.\\nA Governance upgrade is now required to re-initialize this state so that the correct foreign chain identifier can be associated with the given emitter address.
```\\nfunction registerEmitterAndDomain(bytes memory encodedVaa) public {\\n    /* snip: parsing of Governance VAA payload */\\n\\n    // Set the registeredEmitters state variable.\\n    registeredEmitters[foreignChain] = foreignAddress;\\n\\n    // update the chainId to domain (and domain to chainId) mappings\\n    getChainToDomain()[foreignChain] = cctpDomain;\\n    getDomainToChain()[cctpDomain] = foreignChain;\\n}\\n```\\n