Questo overflow di questo intero è sfruttabile?

-1
char buffer[100];
char buffer_size[40];
int i;
fgets(buffer_size,32,stdin);
i = atoi(buffer_size);

if(i+1 < 100)
  if(i>=0)
    fgets(buffer,i,stdin);
    
posta syubelsk1 18.11.2017 - 03:14
fonte

1 risposta

1

Bene, dal momento che i potrebbe essere INT_MAX (0x7FFFFFFF), che è poco più di 2 miliardi, ma se ne aggiungi 1 ricevi 0x80000000 (appena sotto due miliardi negativi, per i segni firmati) ... quello passa il test e si finisce per tentare di riempire un buffer da 100 byte con un massimo di 2 gigabyte di dati. Questo è male (e sfruttabile), sì.

    
risposta data 18.11.2017 - 04:17
fonte

Leggi altre domande sui tag