Funds can be stolen because of incorrect update to `ownerToRollOverQueueIndex` for existing rollovers
In the case where the owner has an existing rollover, the `ownerToRollOverQueueIndex` incorrectly updates to the last queue index. This causes the `notRollingOver` check to be performed on the incorrect `_id`, which then allows the depositor to withdraw funds that should've been locked.\\nIn `enlistInRollover()`, if the user has an existing rollover, it overwrites the existing data:\\n```\\nif (ownerToRollOverQueueIndex[_receiver] != 0) {\\n  // if so, update the queue\\n  uint256 index = getRolloverIndex(_receiver);\\n  rolloverQueue[index].assets = _assets;\\n  rolloverQueue[index].epochId = _epochId;\\n```\\n\\nHowever, regardless of whether the user has an existing rollover, the `ownerToRolloverQueueIndex` points to the last item in the queue:\\n```\\nownerToRollOverQueueIndex[_receiver] = rolloverQueue.length;\\n```\\n\\nThus, the `notRollingOver` modifier will check the incorrect item for users with existing rollovers:\\n```\\nQueueItem memory item = rolloverQueue[getRolloverIndex(_receiver)];\\nif (\\n    item.epochId == _epochId &&\\n    (balanceOf(_receiver, _epochId) - item.assets) < _assets\\n) revert AlreadyRollingOver();\\n```\\n\\nallowing the user to withdraw assets that should've been locked.
The `ownerToRollOverQueueIndex` should be pointing to the last item in the queue in the `else` case only: when the user does not have an existing rollover queue item.\\n```\\n} else {\\n  // if not, add to queue\\n  rolloverQueue.push(\\n      QueueItem({\\n          assets: _assets,\\n          receiver: _receiver,\\n          epochId: _epochId\\n      })\\n  );\\n// Add the line below\\n ownerToRollOverQueueIndex[_receiver] = rolloverQueue.length;\\n}\\n// Remove the line below\\n ownerToRollOverQueueIndex[_receiver] = rolloverQueue.length;\\n```\\n
Users are able to withdraw assets that should've been locked for rollovers.
```\\nif (ownerToRollOverQueueIndex[_receiver] != 0) {\\n  // if so, update the queue\\n  uint256 index = getRolloverIndex(_receiver);\\n  rolloverQueue[index].assets = _assets;\\n  rolloverQueue[index].epochId = _epochId;\\n```\\n