fix: integer overflow when inactive_time exceeds 35
When the inactive_time configuration value exceeds 35, the expression `get_config().inactive_time * 60 * 1000 * 1000` overflows the maximum int value due to implicit integer conversion.
This commit is contained in:
+3
-3
@@ -333,8 +333,8 @@ static void l2cap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
|
|||||||
}
|
}
|
||||||
if (packet[3] < 120 || packet[3] > 140) {
|
if (packet[3] < 120 || packet[3] > 140) {
|
||||||
inactive_time = get_absolute_time();
|
inactive_time = get_absolute_time();
|
||||||
} else if (absolute_time_diff_us(inactive_time, get_absolute_time()) > get_config().inactive_time * 60 *
|
} else if (absolute_time_diff_us(inactive_time, get_absolute_time()) >
|
||||||
1000 * 1000) {
|
static_cast<int64_t>(get_config().inactive_time) * 60 * 1000 * 1000) {
|
||||||
printf("disconnect when inactive\n");
|
printf("disconnect when inactive\n");
|
||||||
inactive_time = get_absolute_time();
|
inactive_time = get_absolute_time();
|
||||||
bt_disconnect();
|
bt_disconnect();
|
||||||
@@ -348,7 +348,7 @@ static void l2cap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
|
|||||||
#if !ENABLE_SERIAL
|
#if !ENABLE_SERIAL
|
||||||
tud_connect();
|
tud_connect();
|
||||||
#endif
|
#endif
|
||||||
}else if (packet[0] == 0x02) {
|
} else if (packet[0] == 0x02) {
|
||||||
printf("Connected DS5 Controller\n");
|
printf("Connected DS5 Controller\n");
|
||||||
check_dse = false;
|
check_dse = false;
|
||||||
is_dse = false;
|
is_dse = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user