From eda2cd56854c8b70e8143ab38f4f18afa505102f Mon Sep 17 00:00:00 2001 From: Dan Halliday Date: Mon, 22 May 2017 10:28:14 +0100 Subject: [PATCH] Check array bounds when reading from preferences Sometimes an array read from preferences is not the expected length, and leads to a crash in CFArrayGetValueAtIndex --- SoundflowerBed/AppController.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoundflowerBed/AppController.mm b/SoundflowerBed/AppController.mm index a558d7c..75e32dc 100644 --- a/SoundflowerBed/AppController.mm +++ b/SoundflowerBed/AppController.mm @@ -1208,7 +1208,7 @@ - (void)readDevicePrefs:(BOOL)is2ch CFStringRef arrayName = [self formDevicePrefName:is2ch]; CFArrayRef mapArray = (CFArrayRef) CFPreferencesCopyAppValue(arrayName, kCFPreferencesCurrentApplication); - if (mapArray) { + if (mapArray && CFArrayGetCount(mapArray) >= numChans) { for (int i = 0; i < numChans; i++) { CFNumberRef num = (CFNumberRef)CFArrayGetValueAtIndex(mapArray, i); if (num) {