aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2015-05-31 23:42:17 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2015-05-31 23:42:17 +0100
commit5d946f4228927be06c03256059e0f0cf7c5408f7 (patch)
treeeea2882abf4631adda71c50a8be04162946fb8f0 /libstdc++-v3
parent1edfb384e845bc80dbb86a01373ffaeef37aeaec (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/stl_algobase.h4
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);
}
/**