-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
Hi, I've noticed that the following code example causes a write out-of-bounds error. The ffi::modbus_set_bits_from_byte function always writes 8 bytes, and a write out-of-bounds error occurs when the length of dest is less than index + 8.
Lines 831 to 849 in 979e99c
| /// # Examples | |
| /// | |
| /// ```rust | |
| /// use libmodbus::{Modbus, ModbusMapping, ModbusTCP}; | |
| /// use libmodbus::prelude::*; | |
| /// let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); | |
| /// let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); | |
| /// | |
| /// // before | |
| /// assert_eq!(modbus_mapping.get_input_bits_mut(), [0u8, 0, 0, 0, 0]); | |
| /// | |
| /// set_bits_from_byte(modbus_mapping.get_input_bits_mut(), 2, 0b1111_1111); | |
| /// | |
| /// // after | |
| /// assert_eq!(modbus_mapping.get_input_bits_mut(), [0u8, 0, 1, 1, 1]); | |
| /// ``` | |
| pub fn set_bits_from_byte(dest: &mut [u8], index: u32, value: u8) { | |
| unsafe { ffi::modbus_set_bits_from_byte(dest.as_mut_ptr(), index as c_int, value) } | |
| } |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels