Les codes fantastiques : une situation pas COMMON
Continuons cette série sur les codes fantastiques avec une catégorie particulière de symboles dans le format ELF, les symboles marqués COMMON.
Continuons cette série sur les codes fantastiques avec une catégorie particulière de symboles dans le format ELF, les symboles marqués COMMON.
D’aucuns penseraient que le langage C est un langage simple. Après tout le fameux Kernighan & Ritchie de 1978 (a.k.a. White Book) ne fait que 200 pages, bien peu pour un langage qui a servi de base au noyau Linux, au compilateur GCC et à l’interpréteur de référence de Python, CPython. Et pourtant s’il y a bien une notion parmi toutes celles introduites dans the White Book qui met au défi ingénieurs en sécurité, chercheurs en compilation et développeurs en tout genre, c’est la notion de pointeur, et cette terrible question : le déréférencement de mon pointeur donne-t-il lieu à un comportement indéfini ?Des ingénieurs de chez Apple ont trouvé un chemin pragmatique et intéressant à cette question, et ils l’ont mis à disposition dans un fork de clang à travers une option, -fbounds-safety, et un fichier d’en-tête, <ptrcheck.h>. Examinons leur approche.
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 en compagnie de noms de variables écrits en Unicode.
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 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.
Déjà abonné ? Connectez-vous