GIOChannel *io;
int fd;
struct le_conn_param param = {0, 0, 0, 0};
+ uint32_t min, max, latency, to_multiplier;
DBG("");
else
device_set_conn_update_state(device, true);
- if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_UINT32, ¶m.min,
- DBUS_TYPE_UINT32, ¶m.max,
- DBUS_TYPE_UINT32, ¶m.latency,
- DBUS_TYPE_UINT32, ¶m.to_multiplier,
+ if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_UINT32, &min,
+ DBUS_TYPE_UINT32, &max,
+ DBUS_TYPE_UINT32, &latency,
+ DBUS_TYPE_UINT32, &to_multiplier,
DBUS_TYPE_INVALID)) {
error("Invalid args");
return btd_error_invalid_args(msg);
}
+ if (min > UINT16_MAX || max > UINT16_MAX ||
+ latency > UINT16_MAX || to_multiplier > UINT16_MAX) {
+ error("Invalid args");
+ return btd_error_invalid_args(msg);
+ }
+ param.min = (uint16_t)min;
+ param.max = (uint16_t)max;
+ param.latency = (uint16_t)latency;
+ param.to_multiplier = (uint16_t)to_multiplier;
+
if (setsockopt(fd, SOL_BLUETOOTH, BT_LE_CONN_PARAM,
¶m, sizeof(param)) < 0) {
error("Can't Update LE conn param : %s (%d)",