• # Assignation dans les if

    Posté par . En réponse au lien C'est parti pour la nouvelle version C2y du langage C. Évalué à 4.

    if (int num_fired = fire_off(argc)) {
    // checks for num_fired is non-zero
    }

    Vous pensez que vous allez utiliser ça ? C'est une fonctionnalité dont j'ai souvent eu envie, mais les risques de confusion entre comparaison et assignation me paraissent assez importants.

    J'ai souvenir d'une tentative d'introduction de backdoor dans le code de Linux, il y a bien longtemps :

    if ((options == (WCLONE|WALL)) && (current->uid = 0))
    retval = -EINVAL;

    Avec l'apparence d'une comparaison, l'user ID passait à 0, et l'utilisateur devenait root. C'est quand même difficile à détecter, sans doute suffisamment pour en décourager l'usage.