diff --git a/simulation/halsim_ds_socket/src/main/native/cpp/DSCommPacket.cpp b/simulation/halsim_ds_socket/src/main/native/cpp/DSCommPacket.cpp index 9088bd7ee8..1aff98843e 100644 --- a/simulation/halsim_ds_socket/src/main/native/cpp/DSCommPacket.cpp +++ b/simulation/halsim_ds_socket/src/main/native/cpp/DSCommPacket.cpp @@ -239,7 +239,9 @@ void DSCommPacket::ReadJoystickDescriptionTag(wpi::span data) { packet.descriptor.name[nameLength] = '\0'; int axesCount = data[0]; packet.descriptor.axisCount = axesCount; - for (int i = 0; i < axesCount; i++) { + for (int i = 0, + len = std::min(axesCount, sizeof(packet.descriptor.axisTypes)); + i < len; i++) { packet.descriptor.axisTypes[i] = data[1 + i]; } data = data.subspan(1 + axesCount);