diff options
| author | Dirk Müller | 2026-05-07 09:39:12 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2026-05-14 10:58:09 +0200 |
| commit | 69e0473f6e98d47c93518424c08ee69ee632c0f0 (patch) | |
| tree | 5f64c22778e3257222470b649460ea9bb9388cb0 /src/catch2/internal/catch_textflow.cpp | |
| parent | 6ee0826dcae55ed1e06b2c5701981221e979e1e6 (diff) | |
| download | catch3-69e0473f6e98d47c93518424c08ee69ee632c0f0.tar.gz | |
Avoid a potential underflow when iterating over invalid inputs
The forward iteration logic already bounds-check for m_it != m_string->end(),
do the same for the backward iteration. The issue with the assert is
that the assert() might not be compiled in, and it is happening after
the dereference, so it was too late.
Diffstat (limited to 'src/catch2/internal/catch_textflow.cpp')
| -rw-r--r-- | src/catch2/internal/catch_textflow.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/catch2/internal/catch_textflow.cpp b/src/catch2/internal/catch_textflow.cpp index 3979048f..0646b10f 100644 --- a/src/catch2/internal/catch_textflow.cpp +++ b/src/catch2/internal/catch_textflow.cpp @@ -148,8 +148,8 @@ namespace Catch { m_it--; } // Skip back over UTF-8 continuation bytes to the leading byte - while ( isUtf8ContinuationByte( *m_it ) ) { - assert( m_it != m_string->begin() ); + while ( m_it != m_string->begin() && + isUtf8ContinuationByte( *m_it ) ) { m_it--; } } |