[HACK] Asunto: Re: Asunto: Re: Integer Buffer Overflow
__BoKeN__
boken at ono.com
Tue Jul 12 14:29:31 CEST 2005
>El valor es MAXUINT-100, más o menos.
Lo siento, pero por mas vueltas que le doy, no consigo verlo.
Y para clarificarme un poco he hecho un bucle que vaya decrementando, y corrobora,
que no es posible llegar a 0 sin antes pasar por todos los numeros positivos.
Para refrescar:
#define MAX_SIZE 80
int main(int argc, char **argv) {
char buf[MAX_SIZE],*pbuf=buf;
int count = atoul(argc[1]);
if (count >= MAX_SIZE) count = MAX_SIZE-1;
while (count--) *pbuf++=getchar();
*pbuf=0;
}
La funcion atoul es igual que atoi pero devuelve un valor unsigned int.
Vamos a ver, entiendo que MAXUINT = 4294967296 (Max unsigned int); (signed
int) MAXUINT = -1, aunque yo a esto le reste 100, count-- ira restando, cuando
llegue a -2147483647 el siguiente valor sera 2147483648 y asi hasta 0, que
es cuando finalizara el bucle.
Por lo que no entiendo porque si le doy el valor MAXUINT - 100 debe ejecutarse
el bucle tan solo 100 veces.
P.D.: ¿No sera que crees que el bucle suma a cada iteracion en lugar de restar?
Saludos y gracias.
More information about the hacking
mailing list