I have always had a dislike of the mis-use of the word "FREE" in adverts, and even more so "FREE*". Not as much as I dislike "Unlimited*" but still, people have had to learn that FREE always has a catch. The word is diluted - nobody believes "FREE" anymore.
The phrase "Buy one, get one free" has been around a while, and it's meaning is pretty clear. Some adverts are much less obvious "FREE mobile phone*" and "*£35/month" so clearly not FREE.
However, I was reading The Consumer Protection from Unfair Trading Regulations 2008 the other day. A good read if you sell anything to the public, by the way. And schedule 1 para 20 leapt out at me. It is one of the commercial practices that is always considered unfair, and hence illegal...
Describing a product as ‘gratis’, ‘free’, ‘without charge’ or similar if the consumer has to pay anything other than the unavoidable cost of responding to the commercial practice and collecting or paying for delivery of the item.
Well, surely "Buy on get one free" falls foul of that? You have to "buy one" to "get one free". It is not actually FREE. It costs (the "buying one") more than just delivery or response costs. It's no really different to "Give me £100 and get one of these FREE". Well, I am no lawyer so I don't know.
So maybe they should use "Two for the price of one" which is just as clear and rather more honest, IMHO.