From 4f71351796d81b016c1480b8d9ba3e54b67ffab4 Mon Sep 17 00:00:00 2001 From: Vftdan Date: Sat, 17 Aug 2024 14:47:22 +0200 Subject: [PATCH] Fix ModifierSet buffer overrun --- modifiers.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modifiers.h b/modifiers.h index 58d7f52..2b9158a 100644 --- a/modifiers.h +++ b/modifiers.h @@ -54,6 +54,9 @@ modifier_set_set_from(ModifierSet * target, const ModifierSet source) { modifier_set_extend(target, source.byte_length); for (size_t i = 0; i < target->byte_length; ++i) { + if (i >= source.byte_length) { + return; + } target->bits[i] |= source.bits[i]; } } @@ -62,6 +65,9 @@ __attribute__((unused)) inline static void modifier_set_unset_from(ModifierSet * target, const ModifierSet source) { for (size_t i = 0; i < target->byte_length; ++i) { + if (i >= source.byte_length) { + return; + } target->bits[i] &= ~source.bits[i]; } } @@ -71,6 +77,9 @@ modifier_set_toggle_from(ModifierSet * target, const ModifierSet source) { modifier_set_extend(target, source.byte_length); for (size_t i = 0; i < target->byte_length; ++i) { + if (i >= source.byte_length) { + return; + } target->bits[i] ^= source.bits[i]; } }