1
0
mirror of https://github.com/MatMoul/g810-led.git synced 2024-12-23 09:16:11 +00:00

Possible buffer overflow correction

This commit is contained in:
MatMoul 2016-12-06 23:06:29 +01:00
parent a4a0b83542
commit 4f9b5f381b

View File

@ -672,31 +672,36 @@ bool Keyboard::setKey(Key key, KeyColors colors) {
}
bool Keyboard::setKeys(KeyValue keyValue[], int keyValueCount) {
KeyValue logo[5];
int maxLogoKeys = 5;
int logoCount = 0;
KeyValue indicators[25];
KeyValue logo[maxLogoKeys];
int maxIndicatorsKeys = 25;
int indicatorsCount = 0;
KeyValue multimedia[25];
KeyValue indicators[maxIndicatorsKeys];
int maxMultimediaKeys = 25;
int multimediaCount = 0;
KeyValue keys[200];
KeyValue multimedia[maxMultimediaKeys];
int maxKeys = 200;
int keysCount = 0;
KeyValue gkeys[25];
KeyValue keys[maxKeys];
int maxGKeys = 25;
int gkeysCount = 0;
KeyValue gkeys[maxGKeys];
for (int i = 0; i < keyValueCount; i++) {
if(keyValue[i].key.addressGroup == KeyAddressGroup::logo) {
if(keyValue[i].key.addressGroup == KeyAddressGroup::logo && logoCount <= maxLogoKeys) {
logo[logoCount] = keyValue[i];
logoCount++;
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::indicators) {
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::indicators && logoCount <= maxIndicatorsKeys) {
indicators[indicatorsCount] = keyValue[i];
indicatorsCount++;
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::multimedia) {
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::multimedia && logoCount <= maxMultimediaKeys) {
multimedia[multimediaCount] = keyValue[i];
multimediaCount++;
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::keys) {
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::keys && logoCount <= maxKeys) {
keys[keysCount] = keyValue[i];
keysCount++;
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::gkeys) {
} else if(keyValue[i].key.addressGroup == KeyAddressGroup::gkeys && logoCount <= maxGKeys) {
gkeys[gkeysCount] = keyValue[i];
gkeysCount++;
}