diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-05-31 23:42:17 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-05-31 23:42:17 +0100 |
commit | 5d946f4228927be06c03256059e0f0cf7c5408f7 (patch) | |
tree | eea2882abf4631adda71c50a8be04162946fb8f0 /libstdc++-v3 | |
parent | 1edfb384e845bc80dbb86a01373ffaeef37aeaec (diff) | |
download | gcc-5d946f4228927be06c03256059e0f0cf7c5408f7.zip gcc-5d946f4228927be06c03256059e0f0cf7c5408f7.tar.gz gcc-5d946f4228927be06c03256059e0f0cf7c5408f7.tar.bz2 |
re PR libstdc++/66354 ([UBSAN] stl_algobase.h:708:7: runtime error: null pointer passed as argument)
PR libstdc++/66354
* include/bits/stl_algobase.h (__fill_a): Check length before calling
memset.
From-SVN: r223906
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_algobase.h | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 19a4c14..599a3fb 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2015-05-31 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/66354 + * include/bits/stl_algobase.h (__fill_a): Check length before calling + memset. + 2015-05-30 Jonathan Wakely <jwakely@redhat.com> * include/bits/stl_algobase.h (__equal<true>::equal): Check length diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index 12eb7ec..703e91c 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -705,8 +705,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) { const _Tp __tmp = __c; - __builtin_memset(__first, static_cast<unsigned char>(__tmp), - __last - __first); + if (const size_t __len = __last - __first) + __builtin_memset(__first, static_cast<unsigned char>(__tmp), __len); } /** |