Переглянути джерело

LibAudio: Prevent int overflow in the user buffer queue

The `UserSampleQueue::remaining_samples` calculates the result by
subtracting two unsigned int numbers. That can lead to integer overflow.
Add an assert to verify that the minuend is greater or equal to the
subtrahend.
Alex Chronopoulos 2 роки тому
батько
коміт
5f67d002a2
1 змінених файлів з 1 додано та 0 видалено
  1. 1 0
      Userland/Libraries/LibAudio/UserSampleQueue.cpp

+ 1 - 0
Userland/Libraries/LibAudio/UserSampleQueue.cpp

@@ -51,6 +51,7 @@ size_t UserSampleQueue::size()
 size_t UserSampleQueue::remaining_samples()
 size_t UserSampleQueue::remaining_samples()
 {
 {
     Threading::MutexLocker lock(m_sample_mutex);
     Threading::MutexLocker lock(m_sample_mutex);
+    VERIFY(m_backing_samples.size() >= m_samples_to_discard);
     return m_backing_samples.size() - m_samples_to_discard;
     return m_backing_samples.size() - m_samples_to_discard;
 }
 }