Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-31038

DBCollection.prototype.createIndexes can stall when given object with large "length" property

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Minor - P4 Minor - P4
    • 3.6.0-rc0
    • Affects Version/s: None
    • Component/s: Shell
    • None
    • Minor Change
    • ALL
    • Hide

      Run the following in the shell:

      db.foo.createIndexes({"length": 1000000})
      
      Show
      Run the following in the shell: db.foo.createIndexes({ "length" : 1000000})

      When createIndexes is called, it immediately does a loop over keys.length. If instead of passing in an array for keys, we pass an object with a field called length that has a large value, the shell will stall in the loop. This causes some issues in the jstestfuzzer.

      I think the easiest solution would be to just check whether keys is actually an array at the beginning of the function, and if not, to return or throw an error without entering the loop.

      This problem is similar to the bug reported here a few years back:
      SERVER-19474

            Assignee:
            ian.boros@mongodb.com Ian Boros
            Reporter:
            ian.boros@mongodb.com Ian Boros
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: