Can the publisher do evil with upgrading the smart contract? In eos, the smart contract is controlled by an account.
Best practices will emerge over time but it is already possible to set permissions up in such a way that a
setcode action must be delayed by some period of time before it can be applied.
The important part of this is that it must be published to the chain before the delay countdown can begin. This means as a dApp user you can look for and find how long you have to "Exit" the dApp if a pending
setcode is published and you don't like the incoming code.
Think of it like a TTL on a DNS record.