Je conçois un défi de devoirs pour les étudiants qui apprennent la sécurité de la mémoire et l'écriture de code C sécurisé. Dans le cadre de cela, je recherche une petite tâche de programmation où il n'est pas trivial d'écrire du code C sans dépassements de tampon, erreurs de tableau hors limites et / ou autres erreurs de sécurité de la mémoire. Quel serait un bon exemple d'une telle tâche?
En d'autres termes: je spécifie la fonctionnalité souhaitée; ils l'implémentent en C; et s'ils ne font pas attention lors de l'implémentation, il y a de fortes chances que leur code présente une vulnérabilité de sécurité de la mémoire. Idéalement, je préférerais quelque chose qui puisse être implémenté de manière concise (quelques centaines de lignes de code, tout au plus) pour garder la tâche d'une taille gérable, et ce serait extra-cool si la tâche était en quelque sorte industriellement ou pratiquement pertinente ou réaliste. ou représentatif de la programmation du monde réel.
Pour donner un exemple d'un domaine différent, la mise en œuvre de la recherche binaire sur une liste triée est un exemple classique d'une tâche de programmation facilement spécifiée où si vous ne faites pas attention lors de la mise en œuvre il, il y a une chance significative que vous ayez une sorte de bogue logique (par exemple, une erreur de décalage, une boucle infinie sur certaines entrées, ce genre de chose). Y a-t-il une bonne tâche correspondante, pour la sécurité, et en particulier les vulnérabilités de sécurité de la mémoire?