diff options
author | Paolo Carlini <pcarlini@suse.de> | 2007-04-02 10:08:50 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2007-04-02 10:08:50 +0000 |
commit | 3d919c620fb071efa7d388622d4b1f713d985045 (patch) | |
tree | be3c13d814365e3fa5cee2460c108c245f4eee79 | |
parent | 5b3f6d1a469246362fec0726b34a71d0bb5da96b (diff) | |
download | gcc-3d919c620fb071efa7d388622d4b1f713d985045.zip gcc-3d919c620fb071efa7d388622d4b1f713d985045.tar.gz gcc-3d919c620fb071efa7d388622d4b1f713d985045.tar.bz2 |
PR libstdc++/31401 (vstring bits)
2007-04-02 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/31401 (vstring bits)
* include/ext/vstring.tcc (find(const _CharT*, size_type,
size_type)): Avoid unsigned overflow.
From-SVN: r123422
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/vstring.tcc | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 62bbca9..2007552 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2007-04-02 Paolo Carlini <pcarlini@suse.de> + PR libstdc++/31401 (vstring bits) + * include/ext/vstring.tcc (find(const _CharT*, size_type, + size_type)): Avoid unsigned overflow. + +2007-04-02 Paolo Carlini <pcarlini@suse.de> + * include/bits/locale_facets.tcc (num_put<>::do_put(iter_type, ios_base&, char_type, const void*)): Fix for sizeof(const void*) > sizeof(unsigned long). diff --git a/libstdc++-v3/include/ext/vstring.tcc b/libstdc++-v3/include/ext/vstring.tcc index 69dd5f0..43467a5 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) |