diff options
| author | comex <comexk@gmail.com> | 2020-11-22 15:48:23 -0500 | 
|---|---|---|
| committer | comex <comexk@gmail.com> | 2020-11-24 12:59:41 -0500 | 
| commit | e8b2fd21d861997e558180d775b14afdc46f3bbd (patch) | |
| tree | 3f4860a38b5935d305f4dd9d08924fc6e5705126 /src/core/hle | |
| parent | 5d1447897aebc371439507f42507bd98f1cfc223 (diff) | |
nvdrv, video_core: Don't index out of bounds when given invalid syncpoint ID
- Use .at() instead of raw indexing when dealing with untrusted indices.
- For the special case of WaitFence with syncpoint id UINT32_MAX,
  instead of crashing, log an error and ignore.  This is what I get when
  running Super Mario Maker 2.
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/nvdrv/syncpoint_manager.h | 4 | 
1 files changed, 2 insertions, 2 deletions
| diff --git a/src/core/hle/service/nvdrv/syncpoint_manager.h b/src/core/hle/service/nvdrv/syncpoint_manager.h index 4168b6c7e..d395c5d0b 100644 --- a/src/core/hle/service/nvdrv/syncpoint_manager.h +++ b/src/core/hle/service/nvdrv/syncpoint_manager.h @@ -37,7 +37,7 @@ public:       * @returns The lower bound for the specified syncpoint.       */      u32 GetSyncpointMin(u32 syncpoint_id) const { -        return syncpoints[syncpoint_id].min.load(std::memory_order_relaxed); +        return syncpoints.at(syncpoint_id).min.load(std::memory_order_relaxed);      }      /** @@ -46,7 +46,7 @@ public:       * @returns The upper bound for the specified syncpoint.       */      u32 GetSyncpointMax(u32 syncpoint_id) const { -        return syncpoints[syncpoint_id].max.load(std::memory_order_relaxed); +        return syncpoints.at(syncpoint_id).max.load(std::memory_order_relaxed);      }      /** | 
