Es una iniciativa interesante que algunos desarrolladores de OpenBSD tengan un blog en undeadly.
Ejemplo de ello es un artículo muy interesante en Multiplication Considered Harmful, del blog de Ray Lai.
Tampoco es que no haya literatura al respecto, pero me parece que Ray lo ha explicado bastante claro. Al menos eso me ha parecido de buena mañana :).
Un desbordamiento numérico, traducción libre:
Un desbordamiento numérico ocurre cuando una operación hace crecer o disminuir un número fuera de límites, dando como resultado un valor mucho mayor o menor de lo esperado.
El primer ejemplo que nos encontramos está bastante claro:
/* un tipo caracter tiene de tamaño un BYTE, lo que le * permite almacenar 256 valores, en este caso del -128 al 127 * por ser con signo (implícito si no se usa unsigned) */ char a, b; a = b = 127; a = a * b; /* desbordamiento! */ /* esperaríamos que 'a' valiera 16129, pero * 'no cabe' dentro de un tipo char, así que obtenemos * un 1 como resultado del overflow :o */
Esto puede ocurrir con otras operaciones, pero es bastante fácil que pase con una multiplicación.
¿Y qué ocurre cuando el resultado de esa multiplicación va destinado a indicar una cantidad de memoria que queremos reservar? Pues un desastre, y si además uno de los operandos puede ser influido por la entrada del usuario: ahí tenemos una vulnerabilidad ;).

![[xml]](/images/xml.gif)
