Addio strncpy: Linux Rinnova la Gestione delle Stringhe per Maggiore Sicurezza
La gestione delle stringhe in programmazione C è da sempre un campo minato. Errori comuni come buffer overflow e vulnerabilità di sicurezza sono spesso legati a funzioni che, se non utilizzate con estrema cautela, possono portare a conseguenze disastrose. Tra queste, strncpy ha giocato per decenni un ruolo ambivalente: una funzione apparentemente innocua ma con insidie nascoste che hanno causato innumerevoli problemi. Dopo un lungo e meticoloso lavoro di refactoring durato circa sei anni, il kernel Linux ha finalmente compiuto un passo decisivo verso una maggiore sicurezza eliminando definitivamente strncpy.
Questa decisione, implementata nella versione 7.2 del kernel, non è stata presa alla leggera. È il risultato di centinaia di patch, discussioni approfondite e un impegno costante degli sviluppatori nel migrare verso API più moderne, sicure e specifiche per la gestione delle stringhe. L’obiettivo è chiaro: ridurre drasticamente la superficie di attacco legata a potenziali vulnerabilità e migliorare l’affidabilità complessiva del sistema operativo.
strncpy: Un Passato Tormentato
La funzione strncpy è stata introdotta per offrire un modo più controllato di copiare stringhe rispetto alla sua controparte, strcpy, che non prevedeva limiti di destinazione. L’intento era quello di copiare al massimo n caratteri da una stringa sorgente a una destinazione. Tuttavia, il suo comportamento presenta due criticità fondamentali che ne hanno decretato la pericolosità nel tempo:
- Mancanza di null termination garantita: Se la lunghezza della stringa sorgente è maggiore o uguale a
n,strncpynon aggiunge automaticamente il carattere nullo (

