From 3ea93f27aa8d02ddbd1fc24bb7e4564d0cab5721 Mon Sep 17 00:00:00 2001 From: Dan Rose Date: Fri, 20 Mar 2020 14:31:03 -0500 Subject: [PATCH] Prevent undefined behavior when serializing empty vector (#122) Since m_get_const_function calls `std::vector::operator[]`, accessing the zeroth element causes undefined behavior. Instead, return a null pointer to make the function behave sanely when vector is empty. Fix #120 --- rmw_cyclonedds_cpp/src/TypeSupport2.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rmw_cyclonedds_cpp/src/TypeSupport2.hpp b/rmw_cyclonedds_cpp/src/TypeSupport2.hpp index 0beadc1..55fceb7 100644 --- a/rmw_cyclonedds_cpp/src/TypeSupport2.hpp +++ b/rmw_cyclonedds_cpp/src/TypeSupport2.hpp @@ -245,6 +245,8 @@ public: } const void * sequence_contents(const void * ptr_to_sequence) const override { + if(sequence_size(ptr_to_sequence) == 0) + return nullptr; return m_get_const_function(ptr_to_sequence, 0); } };