
Если вы никогда не слушали подкаст Пи Джей Вогта Search Engine, вы упускаете многое. Вогт — один из самых любознательных умов. Он способен превратить любой, казалось бы, незначительный факт в запутанную историю, которая часто приводит к неожиданным открытиям.
Недавно он наткнулся на странный факт: аудиосообщения на iPhone, упоминающие название конкретной сети ресторанов, не доставлялись. Он попытался выяснить, почему, и ему это удалось. В некотором роде.
Спойлер
Как и говорит Ги Рамбо в статье, к которой мы скоро перейдем, вот мое честное предупреждение: вам действительно, очень, очень стоит послушать выпуск Search Engine, прежде чем читать дальше.
Во-первых, потому что я не хочу лишать вас путешествия, которое совершает Вогт, выясняя, почему iPhone просто не принимает аудиосообщения, в которых упоминается конкретная сеть ресторанов.
Во-вторых, потому что я убежден, что Search Engine станет одним из ваших любимых шоу. Вам будет сложно не упомянуть что-то, узнанное из выпуска, в следующем разговоре в пабе. Поверьте мне.
Ладно? Ладно.
Итак, как выяснили Вогт и эксперт по кибербезопасности Алекс Стамос, проблема заключается в том, что когда iOS транскрибирует аудиосообщение, она интерпретирует амперсанд в Dave & Buster’s как код, а не как обычный текстовый символ амперсанда.
Оказывается, в подобных случаях Apple должна делать то, что в программировании известно как «экранирование», что, по сути, сообщает системе, что она должна интерпретировать определенный символ как текст, а не как код.
Для большинства людей этого достаточно, но не для Ги Рамбо. Он хотел знать, что (и как) именно сбойнуло в системе, когда iPhone получил аудиосообщение с упоминанием Dave & Buster’s. Поэтому он занялся собственным исследованием.

В своем недавнем посте в блоге вы можете увидеть журналы ошибок и то, как именно iOS ведет себя, когда ожидает код, который так и не поступает. Вы также можете увидеть, что происходит, когда аудиосообщение анализируется и транскрибируется, и все рушится.
Кстати, Apple уже подтвердила Вогту, что планирует исправить эту ошибку в следующем обновлении iOS, так что, если вы хотите протестировать это самостоятельно, вам лучше сделать это в ближайшее время.