Разработчик приложения «Сообщения» для iOS Гильерме Рамбо сообщил о баге, который не позволяет пользователям отправлять голосовые сообщения, содержащие символ амперсанд (&). Таким образом, юзеры не могут отправлять аудио с упоминанием, к примеру, брендов, таких как H&M или Tiffany & Co.
После отправки сообщения оно отобразится на iPhone, а получатель увидит три точки, как будто пользователь что-то печатает. В конечном итоге сообщение исчезает через несколько секунд, так и не появившись у получателя.
Как оказалось, проблема не в самих аудиосообщениях, а в расшифровке, которая сопровождает их. Механизм транскрипции Apple понимает настоящие названия компаний, например H&M или Dave & Buster’s, отображая их с амперсандом, а не с союзом «и». Проблема кроется в символе амперсанда, поскольку механизм транскрипции Apple не отображает его правильно в XHTML, что приводит к ошибке синтаксического анализа на устройстве получателя.
XHTML — это более строгая версия HTML, основанная на XML и допускающая пользовательские теги, если документ совместим со стандартом XML. Символ амперсанда имеет особое значение в HTML/XHTML. Он используется для обозначения специальных символов, которые обычно интерпретируются как код, поэтому должен записываться как «&».
Система транскрипции Apple, однако, не использует это обозначение, и анализатор пытается обнаружить специальный код после амперсанда, обнаруживает ошибку и прекращает анализ содержимого.
BlastDoor contained an explosion with error: BlastDoor.Explosion( domain: «com.apple.BlastDoor.TextMessage.Message», errorType: «XHTMLParseFailure», keyPath: nil )
Ошибка синтаксического анализа запускает функцию BlastDoor Messages от Apple, которая защищает пользователей от вредоносных сообщений.
Рамбо отмечает, что это даже не баг, а ошибка демонстрирует, что механизм BlastDoor от Apple работает так, как задумано. По его словам, функция защищает получателя от эксплойта, который мог бы злоупотребить этим типом проблемы.
Источник: habr.com