For all the talk about "greedy corporations," they are no more tight-fisted and selfish than the typical consumer. (If you've worked in retail, you know what I'm talking about.) Especially the Slashdot consumer. (story: Amazon Adjusts Prices After Sales Error; see the comments)
On the Amazon story: Legally, I think a legitimate case can be made either way, for charging or not, but IANAL. But morally, I think Amazon is in the right. The consumers knew they were getting a literal steal of a bargain. "Buy one, get one free" means you have to buy one. Doubling the deal means you have to buy more, not less. "Buy" obviously means that the price is above $0.00, else it would be called "free": "Get one free, get one free." The people who took advantage of the glitch were being greedy consumers.