Les codes fantastiques : bas les masques !
Continuons cette série sur les codes fantastiques avec une méthode astucieuse pour générer un masque de bits à partir d’un tableau de booléens.
Continuons cette série sur les codes fantastiques avec une méthode astucieuse pour générer un masque de bits à partir d’un tableau de booléens.
Le langage C est un magnifique outil pédagogique pour enseigner le concept de mémoire, puisqu’il laisse la main au développeur pour la gérer. Mais on le sait, cet attrait n’en est pas un quand on parle de sûreté d’exécution, puisque ce langage est connu pour ne pas aider le développeur pour détecter les usages illégaux liés à la mémoire. Le langage Rust a attaqué le problème en rendant explicite le concept de durée de vie. Le langage Safe C++ tente quant à lui d’introduire ce concept en C++. Il y a plus de vingt ans, splint proposait déjà un concept moins ambitieux pour C. Et maintenant certains fous essaient de le porter vers C++, à travers des extensions de Clang. Quelles sont donc toutes ces approches ?
Continuons cette série sur les codes fantastiques en compagnie de noms de variables écrits en Unicode.
Continuons cette série sur les codes fantastiques avec une surprise qui nous est offerte par le shell POSIX.
Continuons cette série sur les codes fantastiques avec une optimisation inattendue de l’éditeur de liens.
Continuons cette série sur les codes fantastiques avec un problème apparemment simple : calculer la moyenne de deux entiers.
Continuons cette série sur les codes fantastiques avec deux drapeaux qui interagissent avec l’interposition de symboles.
Il y a 19 ans, Ulrich Drepper, alors développeur chez Red Hat et un des contributeurs principaux de la glibc, ajoutait au changelog de la glibc la ligne suivante : sysdeps/i386/bsd-_setjmp.S: Use PTR_MANGLE for PC if defined, inaugurant ainsi l’arrivée de la protection des pointeurs de fonction stockés dans des structures internes à la glibc.
L’histoire, ou plutôt l’Histoire, est une coquine. Et quand Dennis Ritchie et Ken Thompson inventent le langage C en 1972, ils prennent une décision anodine, une micro-optimisation qui fait gagner quelques octets, mais qui aura un impact important sur la sécurité de nombreux systèmes : en C, les chaînes de caractères sont terminées par un octet positionné à zéro.
Déjà abonné ? Connectez-vous