Existe-t-il des implémentations libres de strcpy_s et / ou TR24731-1?

J’ai un ancien projet mêlant C et C ++. Il utilise beaucoup les chaînes de caractères C et strcpy , strcat , strncpy , strncat etc. J’ai découvert un certain nombre de dépassements de mémoire tampon et j’aimerais utiliser des fonctions plus sécurisées, telles que strcpy_s . MSVC inclut ces fonctions, mais il me faut quelque chose qui fonctionne sur différentes plates-formes – linux, osx et windows au minimum.

Je connais la strlcpy , mais comme beaucoup de gens l’ont noté ( exemple ), ce n’est vraiment pas une amélioration.


Donc: Existe-t-il des implémentations libres de strcpy_s , strcat_s , etc., ou de l’ensemble du TR24731-1 ?

J’ai besoin de quelque chose qui relève du public domain ou de BSD , mais si vous connaissez des implémentations sous d’autres licences, allez-y et listez-les – je suis sûr que quelqu’un d’autre en bénéficiera.

    Essayez avec la bibliothèque Safe C. Il est sous la licence MIT et selon cette liste implémente les fonctions que vous recherchez:

    La bibliothèque Safe C fournit des fonctions de mémoire de vérification liée et de chaîne selon ISO / IEC TR24731. Ces fonctions sont des fonctions alternatives à la bibliothèque C standard existante qui favorisent une programmation plus sûre.

    Vous pouvez utiliser memcpy et memset etc., qui sont portables et plus sûrs que les fonctions de chaîne.

    Pourquoi ne pas utiliser strncpy et strncat ? Contrairement à strlcpy et strlcat , ce sont des fonctions C standard. Ces fonctions ne sont pas parfaites mais vous pouvez les utiliser en toute sécurité.

    Notez également que les fonctions _s bounds-checking sont facultatives dans la norme actuelle.