Vés al contingut

Problema aritmètic

De la Viquipèdia, l'enciclopèdia lliure

Dins l'entorn de la computació, es denomina problema aritmètic al desbordament de dades (overflow) fora del rang de memòria disponible per a un tipus de dada determinat.

Suposem el següent tros de codi d'un programa en C:

# include <stdio.h>
int main ()
{
int x, y;
x = 32000;
y = 7;
printf ("% d", x * y);
}

Aquest seria un cas de desbordament de "int", ja que per al llenguatge C, es defineix el tipus de dada "int" dins del rang de -32764 a +32764, i el resultat d'aquesta multiplicació, queda fora d'aquest rang.

També en el llenguatge Delphi de Borland podria donar-se el següent cas.

function Multiplicar (x, y: Integer): Integer;
begin
 try
 Result: = x * (999999999 * y);
 except
 Result: = 0;
 end;
end;

En utilitzar aquesta funció, encara que no dona cap error de disseny, de compilació o d'execució, si que retorna dades errònies que poden causar problemes greus dins del processament de les dades en aquesta aplicació.

En general, aquest tipus d'errors produeixen càlculs erronis i fan que la vulnerabilitat del programa quedi manifesta.

Vegeu també[modifica]