miércoles, febrero 25, 2009

Sacelib: Gestión de cadenas y bloques de memoria más segura por Cisco

(vía reddit.programming) Publica la revista Dr Dobb's magazine un un pequeño artículo sobre The Safe C Library, una librería de código que implementa las recomendaciones recogidas en la especificación ISO/IEC TR 24731-1:2007,que define una serie de funciones alternativas a algunas existentes en la librería en C para poder usar funciones de copia de cadenas y de copia de bloques de memoria más segura. Entre otras cosas (del fichero safe_c_lib_readme.txt del código fuente) busca:
  • Proteger contra los desbordamientos de buffer (buffer overflows).
  • No producir cadenas no terminada por '\0'.
  • Informar en caso de truncar cadenas.
  • Manjadores de errores.

Las funciones que implementan son la aquellas encargadas de mover bloques de memoria (memcpy,memcmp,memset,memzero) y las funciones de manejo de cadena en C (strcpy,strcmp, strcasestr,strcpyfld,..). Las nuevas funciones utilizan el sufijo _s para distinguirlas de aquellas presentes en la librería estándar de C.

Otra librería más para facilitar el uso seguro de cadenas en C, aunque desde mi punto de vista, la única manera de acabar con este tipo de problemas es que el compilador genere códifo que compruebe los límites de los arrays. Lo malo es que el uso creativo de punteros en C, hace que implementar este tipo de verificaciones supongan una penalización importante en programas que hagan uso constante de punteros.

Sacelib está desarrollada por Cisco y la licencia es de tipo BSD.

Technorati Tags: ,

No hay comentarios: