Por que algumas mensagens de texto Unicode travam no iPhone OS?

31

Recentemente, uma nova "falha" surgiu na Internet nas últimas semanas, onde um usuário do iPhone é enviado:

  effective. 
      Power
           لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ
 冗

via iMessage, ele trava temporariamente o sistema operacional do telefone e reinicia forçadamente o telefone receptor.

Por que isso funciona?

Shaun Loftin
fonte
3
Na verdade, acredito que apenas os caracteres árabes (e talvez os que estão depois deles) sejam necessários. O texto "poder efetivo" é apenas um preenchedor e pode ser qualquer coisa, mas deve ser longo o suficiente para que a notificação seja truncada (ou pelo menos tente, pois é isso que causa a falha) nos caracteres estrangeiros.

Respostas:

36

Se você precisar de uma correção para isso, use o Siri ou um Mac usando o iMessage para enviar a si mesmo uma nova mensagem. Consulte https://support.apple.com/en-us/HT204897

É um procedimento de três etapas para recuperar e uma futura atualização de software corrigirá esse bug.

  1. Peça à Siri para "ler mensagens não lidas".
  2. Use o Siri para responder à mensagem maliciosa. Depois de responder, você poderá abrir as Mensagens novamente.
  3. Se o problema persistir, toque e segure a mensagem maliciosa, toque em Mais e exclua a mensagem do encadeamento.

Por que isso acontece, é um bug específico na maneira como o Notification Center processa o conteúdo Unicode desta mensagem. O código executa uma operação "não segura" (algo semelhante a 5 dividido por 0 e depois não verifica resultados inesperados) que causa um erro não tratado.

Então, como o Notification Center não pode processar o bloco de texto e, finalmente, trava o Springboard que não tinha código para lidar com essa falha normalmente. Quando nenhum manipulador de erros específico está presente, a maioria das operações possui uma "reinicialização" à prova de falhas para tentar solucionar o erro.

Unicode é uma maneira de codificar caracteres usados ​​para lidar com idiomas com uma contagem de caracteres maior que o inglês. Os programadores podem ter problemas com isso porque aprenderam a programar usando texto ASCII e negligenciam a gravação de seu software com suporte completo a Unicode.

Um bom artigo sobre isso explica "se você ainda está programando dessa maneira, não é muito melhor do que um médico que não acredita em germes".

Este outro artigo explica bem essa situação específica.

A Apple pode fazer análises mais rigorosas de códigos, fazer testes de unidade específicos ou permitir que os usuários finais testem seus códigos como neste e em casos semelhantes .

tron_jones
fonte
6

É algo para a Apple consertar.

O problema parece vir da maneira como o telefone tenta mostrar a mensagem nas notificações. Os caracteres fazem com que o sistema quebre, para que ele tente mostrá-lo brevemente antes de travar e, em seguida, redefinir o telefone na tentativa de corrigi-lo.

Aqui estão algumas correções de curto prazo que você pode fazer até que a Apple resolva o problema.

  • Faça com que a pessoa que enviou a mensagem maliciosa envie outra mensagem cancelando efetivamente a cadeia inicial

  • Envie uma mensagem para si mesmo via Siri, pela planilha de compartilhamento ou pelo seu Mac.

  • Outro leitor observa que "o envio de uma foto para o contato por meio do aplicativo Fotos pode permitir que eles acessem o histórico de mensagens e excluam a conversa"

fonte: http://www.redmondpie.com/how-to-fix-ios-text-messages-crash-bug/

Ruskes
fonte