Помните странный баг, при котором из-за последовательности букв арабского алфавита закрывалось любое приложение использующее движок WebKit в iOS и Mac? Сейчас эксперты из The Register разобрались как он работает. Итак, система Apple CoreText использует для обозначения индекса массива и длины строки только целые числа. Если в нее отправить отрицательное число, то оно определяется при задании границ массива без знака минус.
При обращении к этому же массиву данных другой функции для чтения информации происходит ее выход за край массива в область нераспределенной памяти. Это приводит к аварийному завершению работы приложения, из которого был сделан запрос.
Apple уже закрыла этот баг в еще не готовых операционных системах OS X Mavericks и iOS 7. Но на iOS 6 и Mountain Lion нужно все еще быть аккуртаными с подозрительными почтовыми сообщениями и SMS.
А откуда взялось это отрицательное число? И, раз уж на то пошло, то не целые, а натуральные, ибо целые числа — это натуральные, им противоположные (то бишь отрицательные) и нуль.