From 3d919c620fb071efa7d388622d4b1f713d985045 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Mon, 2 Apr 2007 10:08:50 +0000 Subject: [PATCH] PR libstdc++/31401 (vstring bits) 2007-04-02 Paolo Carlini PR libstdc++/31401 (vstring bits) * include/ext/vstring.tcc (find(const _CharT*, size_type, size_type)): Avoid unsigned overflow. From-SVN: r123422 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/include/ext/vstring.tcc | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 62bbca9db33..20075523a99 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2007-04-02 Paolo Carlini + + PR libstdc++/31401 (vstring bits) + * include/ext/vstring.tcc (find(const _CharT*, size_type, + size_type)): Avoid unsigned overflow. + 2007-04-02 Paolo Carlini * include/bits/locale_facets.tcc (num_put<>::do_put(iter_type, diff --git a/libstdc++-v3/include/ext/vstring.tcc b/libstdc++-v3/include/ext/vstring.tcc index 69dd5f04faa..43467a5ad57 100644 --- a/libstdc++-v3/include/ext/vstring.tcc +++ b/libstdc++-v3/include/ext/vstring.tcc @@ -279,7 +279,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) if (__n <= __size) { - for (; __pos + __n <= __size; ++__pos) + for (; __pos <= __size - __n; ++__pos) if (traits_type::eq(__data[__pos], __s[0]) && traits_type::compare(__data + __pos + 1, __s + 1, __n - 1) == 0) -- 2.30.2