Extremely large values for criteria amounts

Hey. I have what I think is a bug report; if this is not the right place for it, let me know. Occasionally, the amount field from the Achievement API for specific criteria returns clearly incorrect numbers. These numbers have the following properties:

  1. They are close to 2^64.
  2. They are identical for a given character, for all affected criteria.
  3. They are present for achievement where such a large number clearly makes no sense (not that there’s any for which that would be true, that I know).

I can provide specific examples upon request. Fact 2 above is leading me to think that this might be related to the character ID, or may otherwise include some private information, which is the only reason I’m hesitating to do this here.

(And they don’t appear to be overflows or results of confusing int64 and uint64 for the same reason 2 above; they then wouldn’t be identical for vastly different criteria).

Thanks!

Hi Volshebnik,

Thanks for reporting this issue. By chance, are the criteria you are seeing the large values for related to healing/damage done? If not, can you share examples of the data you are seeing? There shouldn’t be any privacy concern with achievement criteria data.

Thanks

Thanks for your reply, Maguthul.

The criteria are not related to damage/healing; instead, they are related to money collected. It appears that all of the criteria are from achievements in a chain, which explains why the amounts are equal; however, the numbers themselves are still too large to be feasible. But this does now seem like a possible overflow; interpreting these in that way yields more meaningful results (below a billion gold, at least :slight_smile: )

Here are some examples, with all players being from Kel’Thuzad:

Weeler Criteria(id=2255, amount=18446744072665747024, done=True)
Weeler Criteria(id=8441, amount=18446744072665747024, done=True)
Weeler Criteria(id=3818, amount=18446744072665747024, done=True)
Weeler Criteria(id=2521, amount=18446744072665747024, done=True)
Weeler Criteria(id=6473, amount=18446744072665747024, done=True)
Weeler Criteria(id=15072, amount=18446744072665747024, done=True)
Weeler Criteria(id=18735, amount=18446744072665747024, done=True)
Weeler Criteria(id=22344, amount=18446744072665747024, done=True)

Mtgeternal Criteria(id=2255, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=8441, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=3818, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=2521, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=6473, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=15072, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=18735, amount=18446744073011957448, done=True)
Mtgeternal Criteria(id=22344, amount=18446744073011957448, done=True)

Thanks for looking at this!

Hi Volshebnik, just to add some support to your issue, I found the same problem with the Got My Mind On My Money series of achievements. The Amount values in the Achievement Criteria are 20 digits long, which is longer than any 64 bit unsigned long value that I tried mapping it to in Java. This was throwing exceptions when my app was fetching the Achievements profile for all my guild members. I had to define the Amount field as a String so that it would not blow up when trying to map it to a Long, and then I converted the String to a Long for other achievs I was working with, as a work-around.

Here is an example of the 20 digit value returned in the Amount field:

{
  "id": 5455,
  "achievement": {
    "key": {
      "href": "https://eu.api.blizzard.com/data/wow/achievement/5455?namespace=static-8.3.0_32861-eu"
    },
    "name": "Got My Mind On My Money",
    "id": 5455
  },
  "criteria": {
    "id": 15071,
    "is_completed": true,
    "child_criteria": [
      {
        "id": 15072,
        "amount": 18446744073248500000,
        "is_completed": true
      }
    ]
  },
  "completed_timestamp": 1510997878000
},

Strange also that the first 10 digits being “1844674407” in all those Money Criteria Amounts, in your player and in my player, are exactly the same!!?