Validate the parameters array

This commit is contained in:
Kovid Goyal 2022-01-13 16:44:43 +05:30
parent 96b46c554e
commit a56471f7ed
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -533,11 +533,11 @@ - (void)render_frame_received:(id)displayIDAsID
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<NSNumber*> *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;