Sto progettando una sfida per i compiti a casa per gli studenti che stanno imparando sulla sicurezza della memoria e scrivendo codice C sicuro. Come parte di questo, sto cercando un piccolo compito di programmazione in cui non è banale scrivere codice C privo di sovraccarichi del buffer, errori di matrice fuori limite e / o altri errori di sicurezza della memoria. Quale sarebbe un buon esempio di tale compito?
In altre parole: specificherò la funzionalità desiderata; lo implementano in C; e se non stanno attenti durante l'implementazione, c'è una possibilità significativa che il loro codice abbia una vulnerabilità di sicurezza della memoria. Idealmente, preferirei qualcosa che possa essere implementato in modo conciso (alcune centinaia di righe di codice, al massimo) per mantenere il compito di dimensioni gestibili, e sarebbe straordinariamente bello se il compito fosse in qualche modo industrialmente o praticamente rilevante o realistico o rappresentante della programmazione del mondo reale.
Per dare un esempio da un dominio diverso, l'implementazione della ricerca binaria su un elenco ordinato è un classico esempio di un'attività di programmazione facilmente specificata in cui, se non si presta attenzione quando si implementa, c'è una possibilità significativa che si avrà una sorta di bug di logica (ad esempio, un errore off-by-one, un loop infinito su alcuni input, quel genere di cose). Esiste un buon compito corrispondente, per sicurezza, e in particolare vulnerabilità di sicurezza della memoria?