1. Always have a contract
The terms you will be working by, including deadlines, the number of included revisions, scope of the project, final deliverables, costs etc. should all be set out in a contract. You should have this contract read, signed and returned, ideally with a deposit, before starting any work.
There is a very helpful post about what should be in a contract here:
2. Always work from a brief
Obviously being handed a well written and thought out brief from a client is great, but it more often than not just doesn't happen. Even if your client has no idea what they want, you still need a brief. I will often have a meeting (or two) with a client, talk through any ideas or requirements they have and write my own brief from our discussions. Writing your own brief (that you can either pass on to your client to complete or write yourself from your discussions with your client) is always a good idea and will save you a lot of hassle down the line.
Some more information on writing a good brief can be found here:
These initial discussions are also a good time to set expectations and talk through things that will be in your contract (because no matter how many times they're told to, nobody reads contracts).
3. Price accordingly
If your client insists on letting you work from an open brief—price the project accordingly. In most cases I set a fixed project price, but working from an open brief with minimal input will mean more work. Extra revisions, more consultation and sometimes even starting from scratch. If that is the case you need to set an hourly price. You can use a combination of pricing models (i.e set a fixed price for a set amount of revisions or hours then an hourly rate for anything extra)
Some relevant posts on pricing: