Check the values of moduleConfigurationCount and keymapCount

This commit is contained in:
Eric Tang
2017-08-08 17:29:30 -07:00
parent 7306073cee
commit 1ef10e9a1a
2 changed files with 8 additions and 0 deletions

View File

@@ -27,6 +27,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
uint16_t keymapCount;
(void)dataModelVersion;
if (moduleConfigurationCount > 255) {
return ParserError_InvalidModuleConfigurationCount;
}
for (uint8_t moduleConfigurationIdx = 0; moduleConfigurationIdx < moduleConfigurationCount; moduleConfigurationIdx++) {
errorCode = parseModuleConfiguration(buffer);
if (errorCode != ParserError_Success) {
@@ -41,6 +44,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
}
}
keymapCount = readCompactLength(buffer);
if (keymapCount > 255) {
return ParserError_InvalidKeymapCount;
}
for (uint8_t keymapIdx = 0; keymapIdx < keymapCount; keymapIdx++) {
errorCode = ParseKeymap(buffer, keymapIdx, keymapCount);
if (errorCode != ParserError_Success) {

View File

@@ -17,6 +17,8 @@
ParserError_InvalidActionCount,
ParserError_InvalidSerializedMacroActionType,
ParserError_InvalidSerializedSwitchKeymapAction,
ParserError_InvalidModuleConfigurationCount,
ParserError_InvalidKeymapCount,
} parser_error_t;
// Functions: