From 4478a105d892c130a83972fd39793f9341240ea3 Mon Sep 17 00:00:00 2001 From: thomason <84239247+thomasonzhou@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:37:39 +0900 Subject: [PATCH] Check vector lengths at runtime to prevent undefined behaviour (#23) --- src/openarm/can/socket/openarm.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/openarm/can/socket/openarm.cpp b/src/openarm/can/socket/openarm.cpp index ac3cb5b..f99eafd 100644 --- a/src/openarm/can/socket/openarm.cpp +++ b/src/openarm/can/socket/openarm.cpp @@ -31,6 +31,13 @@ OpenArm::OpenArm(const std::string& can_interface, bool enable_fd) void OpenArm::init_arm_motors(const std::vector& motor_types, const std::vector& send_can_ids, const std::vector& recv_can_ids) { + if (motor_types.size() != send_can_ids.size() || motor_types.size() != recv_can_ids.size()) { + throw std::invalid_argument( + "Motor types, send CAN IDs, and receive CAN IDs vectors must have the same size, " + "currently: " + + std::to_string(motor_types.size()) + ", " + std::to_string(send_can_ids.size()) + ", " + + std::to_string(recv_can_ids.size())); + } arm_->init_motor_devices(motor_types, send_can_ids, recv_can_ids, enable_fd_); register_dm_device_collection(*arm_); }