La fonction system(3), disponible dans la bibliothèque C standard et standardisée dès C89, est symptomatique d’une époque où la sécurité n’était pas la priorité des développeurs. La lecture de sa page de manuel est pleine d’avertissements, qui sont autant d’enseignements potentiels. Allez, c’est parti, man 3 system.
La fonction system de la libc a la signature suivante :
Un code retour, une chaîne de caractères en entrée, derrière cette simplicité désarmante (la page de manuel dit bien « provides simplicity and convenience ») se cachent une multitude d’écueils que nous allons parcourir ensemble.
1. Séparation des arguments
La fonction se comporte comme si l’on exécutait :
c’est donc le shell par défaut qui se charge de transformer notre chaîne de caractères en une liste d’arguments, en respectant à la fois les caractères blancs (espaces, tabulations, retours...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première