Browse Source

Avoided possible arithmetic overflow in MemoryInputStream::read() for very large streams.

tags/2021-05-28
jules 9 years ago
parent
commit
ebc47d9618
1 changed files with 10 additions and 5 deletions
  1. +10
    -5
      modules/juce_core/streams/juce_MemoryInputStream.cpp

+ 10
- 5
modules/juce_core/streams/juce_MemoryInputStream.cpp View File

@@ -67,13 +67,18 @@ int MemoryInputStream::read (void* const buffer, const int howMany)
{
jassert (buffer != nullptr && howMany >= 0);
const int num = jmin (howMany, (int) (dataSize - position));
if (num <= 0)
if (howMany <= 0 || position >= dataSize)
return 0;
memcpy (buffer, addBytesToPointer (data, position), (size_t) num);
position += (unsigned int) num;
return num;
const size_t num = jmin ((size_t) howMany, dataSize - position);
if (num > 0)
{
memcpy (buffer, addBytesToPointer (data, position), num);
position += num;
}
return (int) num;
}
bool MemoryInputStream::isExhausted()


Loading…
Cancel
Save