From 1072a897f5c17f2d13de16450059baa81c61d525 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Tue, 17 May 2016 13:08:17 -0700 Subject: [PATCH] folly: fbvector: ubsan: don't call memcpy() with nullptr args if size == 0 Reviewed By: meyering, luciang Differential Revision: D3310683 fbshipit-source-id: c86471d54062b2f3455f15fb73340fac486d9e44 --- folly/FBVector.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/folly/FBVector.h b/folly/FBVector.h index fb611e56c1e..036882a4930 100644 --- a/folly/FBVector.h +++ b/folly/FBVector.h @@ -522,7 +522,9 @@ class fbvector : private boost::totally_ordered> { static void S_uninitialized_copy_bits(T* dest, const T* first, const T* last) { - std::memcpy((void*)dest, (void*)first, (last - first) * sizeof(T)); + if (last != first) { + std::memcpy((void*)dest, (void*)first, (last - first) * sizeof(T)); + } } static void @@ -530,7 +532,9 @@ class fbvector : private boost::totally_ordered> { std::move_iterator last) { T* bFirst = first.base(); T* bLast = last.base(); - std::memcpy((void*)dest, (void*)bFirst, (bLast - bFirst) * sizeof(T)); + if (bLast != bFirst) { + std::memcpy((void*)dest, (void*)bFirst, (bLast - bFirst) * sizeof(T)); + } } template