Chromium Code Reviews| Index: chrome/browser/task_manager/sampling/shared_sampler_win.cc |
| diff --git a/chrome/browser/task_manager/sampling/shared_sampler_win.cc b/chrome/browser/task_manager/sampling/shared_sampler_win.cc |
| index 4cd06e986356e47e9d70536d15eb17bc3df8475d..402ebc7c6d5fd3d771ff99140bcbcbb7a8da789f 100644 |
| --- a/chrome/browser/task_manager/sampling/shared_sampler_win.cc |
| +++ b/chrome/browser/task_manager/sampling/shared_sampler_win.cc |
| @@ -457,10 +457,12 @@ std::unique_ptr<ProcessDataSnapshot> SharedSampler::CaptureSnapshot() { |
| // the buffer boundary. |
| if (offset + sizeof(SYSTEM_PROCESS_INFORMATION) > data_buffer.size()) |
| break; |
| - if (offset + sizeof(SYSTEM_PROCESS_INFORMATION) + |
| - (pi->NumberOfThreads - 1) * sizeof(SYSTEM_THREAD_INFORMATION) > |
| - data_buffer.size()) |
| + if (pi->NumberOfThreads >= 0 && |
|
stanisc
2016/12/13 17:12:20
This is to prevent underflow when subtracting 1, r
Wez
2016/12/13 21:30:48
*facepalm* Beware late-night coding - fixed!
Best
|
| + (offset + sizeof(SYSTEM_PROCESS_INFORMATION) + |
| + (pi->NumberOfThreads - 1) * sizeof(SYSTEM_THREAD_INFORMATION) > |
| + data_buffer.size())) { |
| break; |
| + } |
| if (pi->ImageName.Buffer) { |
| // Validate that the image name is within the buffer boundary. |