Problema aritmètic

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