fix: use struct.pack_into for safe 324-byte test packet construction

This commit is contained in:
2026-07-26 17:59:22 +08:00
parent 37d9f94505
commit 5690d792a5
+21 -18
View File
@@ -187,24 +187,27 @@ class TelemetryListener:
ws_manager.push_telemetry(td) ws_manager.push_telemetry(td)
if self.forwarder._sock and self.forwarder._targets: if self.forwarder._sock and self.forwarder._targets:
buf = struct.pack("<iI" + "f" * 79 + "H" + "B" * 6 + "b" * 3, buf = bytearray(324)
1, int(time.time() * 1000), struct.pack_into("<i", buf, 0, 1)
max_rpm, 800.0, rpm, struct.pack_into("<I", buf, 4, int(time.time() * 1000))
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 8, max_rpm)
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 12, 800.0)
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 16, rpm)
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 256, speed_kmh / 3.6)
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 260, rpm / max_rpm * 400000)
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 264, torque)
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, struct.pack_into("<f", buf, 284, boost)
0.0, 0.0, 0.0, speed_kmh / 3.6, 0.0, torque, struct.pack_into("<f", buf, 288, fuel)
0.0, 0.0, 0.0, 0.0, boost, fuel, struct.pack_into("<f", buf, 296, best_lap)
0.0, 0.0, best_lap, last_lap, lap_time, struct.pack_into("<f", buf, 300, last_lap)
0.0, 0.0, 0.0, struct.pack_into("<f", buf, 304, lap_time)
int(phase) % 15, struct.pack_into("<H", buf, 312, int(phase) % 15)
1, int(throttle * 255), int(brake * 255), 0, 0, gear, struct.pack_into("<B", buf, 314, 1)
int(steering * 127), 0, 0) struct.pack_into("<B", buf, 315, int(throttle * 255))
self.forwarder.forward(buf) struct.pack_into("<B", buf, 316, int(brake * 255))
struct.pack_into("<B", buf, 319, gear)
struct.pack_into("<b", buf, 320, int(steering * 127))
self.forwarder.forward(bytes(buf))
for cb in self._callbacks: for cb in self._callbacks:
try: cb(td) try: cb(td)