From 5a4c7f718a0a4f36b1af71335c39a08439a1689b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 19 Sep 2004 21:49:41 +0000 Subject: [PATCH] fixed bug with seeking beyond the end in wxStringInputStream::OnSysSeek() triggered by unit test git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/sstream.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/sstream.cpp b/src/common/sstream.cpp index 7ceedb65b5..de3496327e 100644 --- a/src/common/sstream.cpp +++ b/src/common/sstream.cpp @@ -38,6 +38,8 @@ off_t wxStringInputStream::OnSysSeek(off_t ofs, wxSeekMode mode) { + const size_t ofsMax = m_str.length()*sizeof(wxChar); + switch ( mode ) { case wxFromStart: @@ -45,7 +47,7 @@ off_t wxStringInputStream::OnSysSeek(off_t ofs, wxSeekMode mode) break; case wxFromEnd: - ofs += m_str.length()*sizeof(wxChar); + ofs += ofsMax; break; case wxFromCurrent: @@ -57,6 +59,9 @@ off_t wxStringInputStream::OnSysSeek(off_t ofs, wxSeekMode mode) return wxInvalidOffset; } + if ( ofs < 0 || wx_static_cast(size_t, ofs) >= ofsMax ) + return wxInvalidOffset; + m_pos = wx_static_cast(size_t, ofs); return ofs; -- 2.45.2