Pourquoi certains messages texte Unicode plantent-ils l'iPhone OS?

31

Récemment, un nouveau "pépin" est apparu sur Internet au cours des dernières semaines où, si un utilisateur d'iPhone est envoyé:

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

via iMessage, il bloque temporairement le système d'exploitation du téléphone et force le redémarrage du téléphone récepteur.

Pourquoi ça marche?

Shaun Loftin
la source
3
En fait, je crois que seuls les caractères arabes (et peut-être ceux qui les suivent) sont requis. Le texte "puissance effective" est juste un remplissage et peut être n'importe quoi, mais devrait être suffisamment long pour que la notification soit tronquée (ou du moins tente, car c'est ce qui cause le crash) aux caractères étrangers.

Réponses:

36

Si vous avez besoin d'un correctif pour cela, utilisez Siri ou un Mac utilisant iMessage pour vous envoyer un nouveau message. Voir https://support.apple.com/en-us/HT204897

C'est une procédure en trois étapes pour récupérer et une future mise à jour logicielle corrigera ce bogue.

  1. Demandez à Siri de "lire les messages non lus".
  2. Utilisez Siri pour répondre au message malveillant. Après avoir répondu, vous pourrez rouvrir Messages.
  3. Si le problème persiste, appuyez longuement sur le message malveillant, appuyez sur Plus et supprimez le message du fil.

Quant à savoir pourquoi cela se produit, c'est un bogue spécifique dans la façon dont Notification Center rend le contenu Unicode de ce message. Le code effectue une opération "non sûre" (quelque chose de semblable à 5 divisé par 0, puis ne vérifie pas les résultats inattendus) qui provoque une erreur non gérée.

Puis, puisque Notification Center ne peut pas restituer le bloc de texte et plante finalement le Springboard qui n'avait pas de code pour gérer cet échec gracieusement. Lorsqu'aucun gestionnaire d'erreur spécifique n'est présent, la plupart des opérations ont un «redémarrage vous-même» à sécurité intégrée pour essayer de corriger l'erreur.

Unicode est un moyen de coder les caractères utilisés pour gérer les langues qui ont un plus grand nombre de caractères que l'anglais. Les programmeurs peuvent avoir des problèmes avec cela car ils ont appris à programmer en utilisant du texte ASCII et ils négligent d'écrire leur logiciel avec un support Unicode complet.

Un bon article à ce sujet explique "si vous programmez toujours de cette façon, vous n'êtes pas beaucoup mieux qu'un médecin qui ne croit pas aux germes".

Cet autre article explique bien cette situation spécifique.

Apple pourrait soit effectuer des révisions de code plus strictes, avoir des tests unitaires spécifiques ou laisser les utilisateurs finaux tester leur code comme dans ce cas et dans des cas similaires .

tron_jones
la source
6

C'est quelque chose qu'Apple doit corriger.

Le problème semble provenir de la façon dont le téléphone essaie d'afficher le message dans les notifications. Les personnages provoquent la panne de ce système, de sorte qu'il essaie brièvement de le montrer avant de planter, puis de réinitialiser le téléphone pour tenter de le réparer.

Voici quelques correctifs à court terme que vous pouvez faire jusqu'à ce qu'Apple corrige le problème.

  • Demandez à la personne qui vous a envoyé le message malveillant d'envoyer un autre message annulant efficacement le brin initial

  • Envoyez-vous un message via Siri, la feuille de partage ou depuis votre Mac.

  • Un autre lecteur note que «l'envoi d'une photo au contact via l'application Photos peut lui permettre d'accéder à l'historique des messages et de supprimer la conversation»

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

Ruskes
la source