From d38e704115060bf8d89ac5efd9188d9efe7d6efa Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 5 May 2021 13:15:33 +1000 Subject: [PATCH] SITL: fix memory over-read detected by Valgrind ==15803== Conditional jump or move depends on uninitialised value(s) ==15803== at 0x4C34975: index (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==15803== by 0x444D8D: SITL::Frame::load_frame_params(char const*) (SIM_Frame.cpp:363) ==15803== by 0x445415: SITL::Frame::init(char const*, SITL::Battery*) (SIM_Frame.cpp:432) ==15803== by 0x3696ED: SITL::MultiCopter::MultiCopter(char const*) (SIM_Multicopter.cpp:35) ==15803== by 0x34B49C: SITL::MultiCopter::create(char const*) (SIM_Multicopter.h:44) ==15803== by 0x34C58E: HALSITL::SITL_State::_parse_command_line(int, char* const*) (SITL_cmdline.cpp:480) ==15803== by 0x344005: HALSITL::SITL_State::init(int, char* const*) (SITL_State.cpp:923) ==15803== by 0x33D854: HAL_SITL::run(int, char* const*, AP_HAL::HAL::Callbacks*) const (HAL_SITL_Class.cpp:182) ==15803== by 0x15ACDD: main (Copter.cpp:678) ==15803== --- libraries/SITL/SIM_Frame.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/SITL/SIM_Frame.cpp b/libraries/SITL/SIM_Frame.cpp index 639b6deecd..32bc4a7992 100644 --- a/libraries/SITL/SIM_Frame.cpp +++ b/libraries/SITL/SIM_Frame.cpp @@ -345,7 +345,8 @@ void Frame::load_frame_params(const char *model_json) if (fd == -1) { AP_HAL::panic("%s failed to load\n", model_json); } - char buf[st.st_size]; + char buf[st.st_size+1]; + memset(buf, '\0', sizeof(buf)); if (AP::FS().read(fd, buf, st.st_size) != st.st_size) { AP_HAL::panic("%s failed to load\n", model_json); }