Desbordamiento de enteros Vs. truncamiento/redondeo

Jueves, 26 de Julio de 2007

En Kriptopolis hay un post interesante que abre un debate sobre si Java es o no es explotable a partir del desbordamiento de enteros. Este “efecto”, que en C se puede combinar con otros para romper una aplicación, en Java se convierte en un truncamiento documentado del valor que supuestamente se desborda.
Está bien leer el artículo entero (y el original también en h4ck1t) y además los comentarios.

Personalmente creo que no es explotable. El caso solo se produce cuando necesitamos parsear un valor y utilizamos el método incorrecto.

Produce truncamiento:

short importe = Integer.valueOf(args[1]).shortValue();

No produce truncamiento (lanza excepcion si lo encuentra):

short importe = Short.valueOf(args[1]).shortValue();

Si necesitas un short ¿que sistema de parseado utilizarías? El segundo, ya que se apoya en el objeto wraper de short, que es java.lang.Short, el cual si lanza un NumberFormatException si el valor no “cabe” en un short (entre -32768 y 32767).

1 comentario to “Desbordamiento de enteros Vs. truncamiento/redondeo”

  1. Jorge:

    Compadre, muy interesante tu comentario…
    Realmente no puedo decir mucho, debo estudiar más el caso, pero si parece convincente ya que noy otra forma en que se produzca un desbordamiento.
    Te tengo en mi RSS reader.

Hacer un comentario

XHTML: Puedes utilizar las siguientes etiquetas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Verification Image

Debes leer y teclear los caracteres entre 0..9 y A..F para enviar la respuesta.