• [^] # Re: Est-ce que tu programme ?

    Posté par . En réponse à la dépêche Failles de sécurité dans openssl. Évalué à 1.

    Tu sais, il y a aussi des buffer overflows qui sont exploitables avec les fonctions que tu proposes ? Ce n'est pas tout de dire qu'il faut les utiliser, encore faut-il le faire correctement.

    Si tu as un exemple de buffer overflow avec strncpy() et snprintf() à montrer, je suis preneur, ça m'intéresse (sérieux).
    Cela dit, tu as raison qu'il faut malgré tout utiliser correctement les fonctions en question. J'ai été étonné de voir des collègues sensés être expérimentés (plusieurs années) coder sans aucune sécurité. Personnellement (et pour répondre à ton titre) je teste toujours les valeurs de retour et je vérifie beaucoup de choses. C'est là qu'on voit que l'expérience a une valeur relative car des "petits jeunes" codent parfois beaucoup mieux qu'un supposé expérimenté.

    Par exemple, sais-tu comment est géré la caractère de fin de chaîne pour les fonctions dont tu parles (et strncpy que tu as omis) ?

    En cas d'oubli, un petit coup de "man strncpy" et c'est bon (je viens de le faire). Au fait je n'ai pas omis strncpy, j'en parlais justement dans mon message précédent (et tu l'as cité) ?!

    il y a d'autres moyens d'arriver à des overflows (realpath(), gets(), scanf(), ...)

    Il est déconseillé d'utiliser gets(), c'est même marqué dans la page de man : "No check for buffer overrun is performed (see BUGS below)", il est conseillé d'utiliser fgets() à la place.

    Au fait, printf() ne permet pas de faire de buffer overflow que je sache (sprintf() oui puisqu'on écrit dans un buffer).