mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-09-08 00:47:13 -05:00
FIX: Sanitizing adapters' byte count
This commit is contained in:
@@ -103,6 +103,8 @@ class LinkRawWireless {
|
||||
#else
|
||||
static constexpr int CMD_TIMEOUT = 15;
|
||||
#endif
|
||||
static constexpr int MAX_TRANSFER_BYTES_SERVER = 87;
|
||||
static constexpr int MAX_TRANSFER_BYTES_CLIENT = 16;
|
||||
static constexpr int LOGIN_STEPS = 9;
|
||||
static constexpr int COMMAND_HEADER_VALUE = 0x9966;
|
||||
static constexpr int RESPONSE_ACK = 0x80;
|
||||
@@ -865,11 +867,16 @@ class LinkRawWireless {
|
||||
for (u32 i = 1; i < result.dataSize; i++)
|
||||
response.data[i - 1] = result.data[i];
|
||||
u32 header = result.data[0];
|
||||
response.sentBytes[0] = header & 0b1111111;
|
||||
response.sentBytes[1] = (header >> 8) & 0b11111;
|
||||
response.sentBytes[2] = (header >> 13) & 0b11111;
|
||||
response.sentBytes[3] = (header >> 18) & 0b11111;
|
||||
response.sentBytes[4] = (header >> 23) & 0b11111;
|
||||
response.sentBytes[0] =
|
||||
Link::_min(header & 0b1111111, MAX_TRANSFER_BYTES_SERVER);
|
||||
response.sentBytes[1] =
|
||||
Link::_min((header >> 8) & 0b11111, MAX_TRANSFER_BYTES_CLIENT);
|
||||
response.sentBytes[2] =
|
||||
Link::_min((header >> 13) & 0b11111, MAX_TRANSFER_BYTES_CLIENT);
|
||||
response.sentBytes[3] =
|
||||
Link::_min((header >> 18) & 0b11111, MAX_TRANSFER_BYTES_CLIENT);
|
||||
response.sentBytes[4] =
|
||||
Link::_min((header >> 23) & 0b11111, MAX_TRANSFER_BYTES_CLIENT);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1386,11 +1386,16 @@ class LinkWireless {
|
||||
// parse ReceiveData header
|
||||
u32 sentBytes[LINK_WIRELESS_MAX_PLAYERS] = {0, 0, 0, 0, 0};
|
||||
u32 receiveDataHeader = result->data[0];
|
||||
sentBytes[0] = receiveDataHeader & 0b1111111;
|
||||
sentBytes[1] = (receiveDataHeader >> 8) & 0b11111;
|
||||
sentBytes[2] = (receiveDataHeader >> 13) & 0b11111;
|
||||
sentBytes[3] = (receiveDataHeader >> 18) & 0b11111;
|
||||
sentBytes[4] = (receiveDataHeader >> 23) & 0b11111;
|
||||
sentBytes[0] = Link::_min(receiveDataHeader & 0b1111111,
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_SERVER);
|
||||
sentBytes[1] = Link::_min((receiveDataHeader >> 8) & 0b11111,
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_CLIENT);
|
||||
sentBytes[2] = Link::_min((receiveDataHeader >> 13) & 0b11111,
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_CLIENT);
|
||||
sentBytes[3] = Link::_min((receiveDataHeader >> 18) & 0b11111,
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_CLIENT);
|
||||
sentBytes[4] = Link::_min((receiveDataHeader >> 23) & 0b11111,
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_CLIENT);
|
||||
|
||||
bool isServer = linkRawWireless.getState() == State::SERVING;
|
||||
u32 cursor = 1;
|
||||
|
||||
@@ -30,8 +30,10 @@ class LinkWirelessOpenSDK {
|
||||
|
||||
public:
|
||||
static constexpr int MAX_TRANSFER_WORDS = 23;
|
||||
static constexpr int MAX_TRANSFER_BYTES_SERVER = 87;
|
||||
static constexpr int MAX_TRANSFER_BYTES_CLIENT = 16;
|
||||
static constexpr int MAX_TRANSFER_BYTES_SERVER =
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_SERVER;
|
||||
static constexpr int MAX_TRANSFER_BYTES_CLIENT =
|
||||
LinkRawWireless::MAX_TRANSFER_BYTES_CLIENT;
|
||||
static constexpr int HEADER_SIZE_SERVER = 3;
|
||||
static constexpr int HEADER_SIZE_CLIENT = 2;
|
||||
static constexpr int HEADER_MASK_SERVER = 0b1111111111111111111111;
|
||||
|
||||
Reference in New Issue
Block a user