mirror of
https://github.com/Lekensteyn/ltunify.git
synced 2025-12-09 10:03:23 +00:00
Fix compiler warnings
The memcpy bug is actually a real one-by-off. Since the msg_long struct is contained in a union of hidpp_message, this does not lead to write-past-boundaries (but it may read more than intended). Some fields of version could be uninitialised (when the register query failed). Explicitly clear the values to make clang happy.
This commit is contained in:
@@ -402,12 +402,12 @@ static bool set_register(int fd, u8 device_index, u8 address,
|
||||
msg.report_id = LONG_MESSAGE;
|
||||
exp_sub_id = SUB_SET_LONG_REGISTER;
|
||||
msg.msg_long.address = address;
|
||||
memcpy(&msg.msg_long.str, params, LONG_MESSAGE_LEN - HEADER_SIZE);
|
||||
memcpy(&msg.msg_long.str, params, sizeof msg.msg_long.str);
|
||||
} else {
|
||||
msg.report_id = SHORT_MESSAGE;
|
||||
exp_sub_id = SUB_SET_REGISTER;
|
||||
msg.msg_short.address = address;
|
||||
memcpy(&msg.msg_short.value, params, SHORT_MESSAGE_LEN - HEADER_SIZE);
|
||||
memcpy(&msg.msg_short.value, params, sizeof msg.msg_short.value);
|
||||
}
|
||||
msg.sub_id = exp_sub_id;
|
||||
|
||||
@@ -717,6 +717,8 @@ bool get_device_version(int fd, u8 device_index, u8 version_type, struct val_reg
|
||||
bool get_device_versions(int fd, u8 device_index, struct version *version) {
|
||||
struct val_reg_version ver;
|
||||
|
||||
memset(version, 0, sizeof *version);
|
||||
|
||||
if (get_device_version(fd, device_index, VERSION_FIRMWARE, &ver)) {
|
||||
version->fw_major = ver.v1;
|
||||
version->fw_minor = ver.v2;
|
||||
|
||||
Reference in New Issue
Block a user