L'histoire géniale du programmeur qui a tout effacé en 1981 à cause d'une astérisque

Sur The Register, un témoignage improbable d’un lecteur qui raconte la fois où il a effacé toutes les données et tout le code de son entreprise. Voilà qui date pas mal, puisque c,’était en 1981, il avait 21 ans, et il développait tout seul un script de nettoyage pour un mainframe IBM. Le genre de mission qu’on ne devrait pas trop confier à un dev junior sans relecture. C’est précisément ce qui a été fait, et la suite est exactement ce que vous pouvez imaginer.
Le système gérait des machines virtuelles pour les utilisateurs, chacune avec son disque attaché et une lettre attribuée de A à Z. À la fin de la journée, le script de Miller, notre héros, faisait trois choses simples : il rattachait tous les disques, les sauvegardait sur un disque temporaire, puis effaçait les originaux. Le problème, c’est que le disque temporaire recevait une lettre dynamique, pas prédictible à l’avance. Donc Miller avait écrit du code pour récupérer cette lettre au moment où elle était attribuée.
Sauf que voilà. Un jour, l’entreprise ajoute un nouveau compte utilisateur. Et là, les 26 lettres de l’alphabet sont toutes occupées. Le système ne peut plus attribuer de lettre au disque temporaire.
La fonction censée renvoyer la lettre ne renvoie pas une erreur, mais une astérisque. Sauf que dans la plupart des langages de scripting shell, l’astérisque est un caractère joker qui veut dire "tout ce que tu trouves". Quand la commande de suppression s’exécute avec un astérisque à la place d’une lettre précise, elle ne supprime pas un disque. Elle supprime tout. Chaque fichier, toutes les données, tout le code de l’entreprise.
Une journée complète a été nécessaire pour restaurer ce qui pouvait l’être. Une vingtaine de collègues sont restés à se tourner les pouces pendant la restauration. Miller, lui, a appris ce jour-là pourquoi le contrôle de code par un pair existe. Plus de quarante ans plus tard, il dit que la leçon ne l’a jamais quitté.
L’histoire date de 1981, mais elle reste actuelle à un détail près. Aujourd’hui, on a les revues de code, les sauvegardes incrémentales, les snapshots, les outils de récupération, et on confie quand même des scripts shell critiques à des assistants IA qui n’ont pas toujours conscience de ces pièges . L’astérisque parasite n’a pas disparu, elle a juste changé de support. Méfiance donc !
Source :
The Register
Source : korben.info