From a56471f7ed6adf863175b7f9f5c916ea571887d5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 13 Jan 2022 16:44:43 +0530 Subject: [PATCH] Validate the parameters array --- glfw/cocoa_init.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/glfw/cocoa_init.m b/glfw/cocoa_init.m index 33f3fd3f8..5875e873f 100644 --- a/glfw/cocoa_init.m +++ b/glfw/cocoa_init.m @@ -533,11 +533,11 @@ build_global_shortcuts_lookup(void) { if (!v || ![v isKindOfClass:[NSDictionary class]]) continue; NSDictionary *value = v; id p = [value objectForKey:@"parameters"]; - if (!p || ![p isKindOfClass:[NSArray class]]) continue; + if (!p || ![p isKindOfClass:[NSArray class]] || [(NSArray*)p count] < 2) continue; NSArray *parameters = p; - NSInteger ch = [parameters[0] integerValue]; - NSInteger vk = [parameters[1] integerValue]; - NSEventModifierFlags mods = [parameters[2] unsignedIntegerValue]; + NSInteger ch = [parameters[0] isKindOfClass:[NSNumber class]] ? [parameters[0] integerValue] : 0xffff; + NSInteger vk = [parameters[1] isKindOfClass:[NSNumber class]] ? [parameters[0] integerValue] : 0xffff; + NSEventModifierFlags mods = ([parameters count] > 2 && [parameters[2] isKindOfClass:[NSNumber class]]) ? [parameters[2] unsignedIntegerValue] : 0; static char buf[64]; if (ch == 0xffff) { if (vk == 0xffff) continue;