Live data from Hacker News

Diablo III Economy Broken by an Integer Overflow Bug

minimaxir.com

61–70 of 129 posts

Re: Diablo III Economy Broken by an Integer Overflow Bug

#61
post #59
post #23

Earlier quoted context omitted.

It's basically a very pretty slot machine. I played quite a bit of D2 and D3. The thrill comes from grinding for hours (and hours and hours) and finding that one item that earns you hundreds of dollars. (Yes real dollars) You can thank the the Real-Money Auction House for both destroying the game and being the one thing that keeps so many people coming back for more.

> It's basically a very pretty slot machine. I didn't see the connection so clearly until now. How is D3 even legal?

Why would it be illegal?

Re: Diablo III Economy Broken by an Integer Overflow Bug

#62
post #29
post #3

Just another reminder that it's never worth bypassing the normal deployment process. Every year or two I learn a similar lesson myself: it's so tempting, the fix is so small, it couldn't possibly break anything (heck, I once had a data-gathering script that made a bunch of read-only calls to our system's API cause a live issue). Just say no.

To be fair, I am not sure if anyone would try posting 6 billion gold onto a PTR equivalent of the RMAH or whether the RMAH is even available on the PTR, which might explain why it wasn't tested.

A public test should not be your only line of testing, especially when said feature to be tested deals with real money.

Re: Diablo III Economy Broken by an Integer Overflow Bug

#63
post #56

The scary thing is that integer overflows are considered rare so unlike things like null-pointer dereference no one really checks for them (heck, it seems impractical checking for it). In this case, how should they defend against an overflow? Impose an arbitrary limit on gold?

Use arbitrary precision integers. It's hard to imaging the performance would be noticeably impacted for storing the amount of gold someone has.

Re: Diablo III Economy Broken by an Integer Overflow Bug

#64

Earlier quoted context omitted.

Why? It's just a matter of scale. Until very recently, Romania's currency was such that most middle-class families had 8-10 digits in their bank account at any given moment, and the economy is relatively healthy. Good items sell for hundreds of millions. The number of zeroes doesn't matter, as long as the balance between items and monetary value is stable.

"The number of zeroes doesn't matter, as long as the balance between items and monetary value is stable." And you're not just starting the game. The way that D3 drops work, the first few times you're visiting the auction house, it's to buy, not sell (unless you get very lucky). The game was also balanced around the auction house - meaning fewer high quality items drop, with the belief being that you're selling those…

" The game was also balanced around the auction house - meaning fewer high quality items drop, with the belief being that you're selling those few high quality items & kitting yourself out from the auction house."

AFAIK, Blizzard collects interest on each real money transaction, so if they're optimizing for maximization of that interest (I'm assuming they do) they aren't minimizing occurrence of the rarest of the items. They should behave like diamond cartel...

Re: Diablo III Economy Broken by an Integer Overflow Bug

#65

It is odd that they're using 32-bit numbers when you'd be hard pressed to find a 32-bit only CPU and machines with over 4GB of memory are the standard. Good luck overflowing a 64-bit unsigned.

Someone could do it, I'm sure. Use a bignum implementation that has no limit.

Re: Diablo III Economy Broken by an Integer Overflow Bug

#66
post #61
post #59

Earlier quoted context omitted.

> It's basically a very pretty slot machine. I didn't see the connection so clearly until now. How is D3 even legal?

Why would it be illegal?

Because it could seen as online gambling. You spend money to buy items to then grind to find more items to hopefully cash out.

Re: Diablo III Economy Broken by an Integer Overflow Bug

#67

I remember a similar bug in the original Asherons Call (amazingly, still running with regular content updates!). Three or four years in, they added a new, very expensive object to the game (a "Pyreal Scarab" for anyone who cares). It cost a lot, so the idea was that people wouldn't be (at that point in the economy) buying many. Now, in Asheron's Call, the world is huge . There are hundreds, if not thousands of vendor…

>Trust me, out of all the customers whose data you don't want to muss with, it's hardcore MMORPG players.

Welp, that's what happens when you have only online play on only official servers. Single player offline wouldn't be affected - cheat all you want! Online play on unofficial servers means server admins can take whatever action they want - ban offenders, leave offenders alone, or rollback - depending on what the admin and the players want.

Re: Diablo III Economy Broken by an Integer Overflow Bug

#68
post #35

Earlier quoted context omitted.

> heck, I once had a data-gathering script that made a bunch of read-only calls to our system's API cause a live issue I don't think you can just throw that out here with no story. Well...I guess you can , it just makes me sad.

The script was a permission checker; roughly, for each client check whether they had any object types they didn't have permission for, plus a bit more logic for things like "they have permission A which is a superset of B but don't have permission B", and output a report. There was a bug in the DB cache used by our security service (I think caused by a broken clone() implementation that shallow-copied when it should…

And I guess that meant that the clients would find themselves unable to access things since the permissions were cached, so you were actually seeing issues outside of your script results. Yea I can see how that would be truly baffling, and provides good motivation for not modifying interaction with production on a Friday evening. Thanks :)

Re: Diablo III Economy Broken by an Integer Overflow Bug

#69

I feel sorry for the players who were amused by this and will now likely get banned. I don't know when video games started to be like a bad elementary school where you get punished for experimenting or finding a loophole, but it seems like it's punishing one of the fundamental joys of games. Or at least one of the joys I remember being particularly rewarding as a child.

I agree to some degree but MMO games in general are serious business and a special breed, especially when real currency is involved. It was most definitely against the ToS and I am sure that most of the players who participated in the exploit knew that. Also there were people who were using this bug to make real life money through the real money auction house, those people in particular can't be surprised that they were banned.

Re: Diablo III Economy Broken by an Integer Overflow Bug

#70
post #3

Just another reminder that it's never worth bypassing the normal deployment process. Every year or two I learn a similar lesson myself: it's so tempting, the fix is so small, it couldn't possibly break anything (heck, I once had a data-gathering script that made a bunch of read-only calls to our system's API cause a live issue). Just say no.

Reminds me of a time a coworker at a previous job almost brought down a production server by opening a file in vi.

That file was a customer log that had grown to 100+gb in size due to an error that she was debugging. She failed to check the log size, instead assuming that it was a small file left over after that night's log rotation. When vi tried to load the file to memory, it almost crashed the box before we could kill it (we still got calls about degraded performance though).

Post reply on HN