Un correctif qui reproduisait son propre défaut
La liste des négations était cherchée en sous-chaîne. L’article indéfini contient la particule de négation, et une présentation demandée disparaissait sans bruit.
Une demande nommant trois livrables en produisait deux. L’analyseur était neuf, écrit justement pour empêcher une demande de produire ce qu’elle n’avait pas demandé.
#La cause
La négation était détectée par recherche de sous-chaîne. En français, l’article indéfini contient la particule de négation : « une présentation » contient « ne ». L’analyseur lisait une présentation demandée comme une présentation refusée, et la laissait tomber.
#Le correctif, et pourquoi il est court
La négation se cherche sur des mots entiers, en découpant sur tout ce qui n’est pas alphanumérique, l’apostrophe exceptée. Deux lignes. Ce qui est intéressant, c’est ce qui l’a attrapé : un test exigeant qu’une demande combinée rende trois sorties distinctes, écrit avant qu’on ne fasse confiance à l’analyseur.
#Deux leçons voisines, tirées de la même passe
- Une garde exigeant qu’un outil n’expose aucun chemin de fichier a rougi parce qu’elle lisait la description humaine de l’outil, y trouvait le mot « chemin » dans la phrase expliquant qu’il n’y en a pas, et rougissait sur sa propre explication. Elle inspecte désormais les clés du schéma déclaré.
- Un test exigeant qu’une carte bloquée ne démarre aucun processus rougissait au hasard, parce que son compteur était global et voyait des auxiliaires inoffensifs lancés par les tests voisins. Il ne compte plus que les processus d’éditeurs.
Les trois ont la même forme : la vérification regardait de la prose ou une variable globale, quand la propriété vivait dans une structure.
#Sources
- Deskworth OS, handover report 0.0.22DeskworthDocument interne, non publié
Read next