Erreur off-by-one

De testwiki
Aller à la navigation Aller à la recherche

Modèle:Titre mis en forme Modèle:Voir homonymes

En informatique, une erreur de type Modèle:Lang (OBOE, « erreur de décalage unitaire ») est une Modèle:Lien impliquant l'équivalent discret d'un problème aux limites. Elle apparaît régulièrement en programmation lorsqu'une boucle s'itère trop ou trop peu. Ainsi, l'erreur peut émerger lorsqu'un programmeur fait des erreurs telles que d'utiliser la commande « plus petit que ou égal à » à un endroit où il aurait plutôt dû utiliser « plus petit que ». L'erreur peut également se produire lorsqu'il oublie qu'une série débute à zéro plutôt qu'à 1[1].

Sécurité informatique

Une erreur Modèle:Lang typique dans le domaine de la sécurité informatique est causée par la mauvaise gestion de la routine strncat. Une méconnaissance répandue de strncat est que la Modèle:Lang ne s'écrira pas au-delà de la longueur maximale. En fait, la commande va écrire un caractère nul un octet au-delà de la longueur maximale spécifiée.

Exemple d'erreur Modèle:Lang avec strncat

void foo (char *s)
{
    char buf[15];
    memset(buf, 0, sizeof(buf));
    strncat(buf, s, sizeof(buf)); // Le paramètre final devrait être : sizeof(buf)-1
    return;
}

Exemple en mathématique

La formule de la série géométrique s'écrit

n=0+qn=11q.

Une erreur de type "off-by-one" serait d'écrire

12+14+=1112=2.

parce que cette dernière série commence par le terme n=1.

Notes et références

Modèle:Traduction/Référence Modèle:Références

Voir aussi

Articles connexes

Modèle:Portail