Fürs Archiv (und für Suchmaschinen): clang-tidy nervt mit Warnungen über memcpy herum, man solle lieber memcpy_s verwenden. Das ist natürlich grober Unfug und ein weitere glorreicher Verkacker / Rohrkrepierer von Microsoft.

memcpy_s ist im Annex K und optional und glibc implementiert das nicht. dietlibc implementiert das auch nicht, weil es das Äquivalent von Gendern für C ist. Bringt nichts, regt nur alle auf und macht Code weniger portabel.

Old and busted: memcpy(dest,src,bytecount);

New hotness: memcpy_s(dest,destsize,src,bytecount);

Ich habe persönlich beobachtet, wie sie das bei Windows per Fiat des Mufti eingeführt haben, und die Leute sich dann alle Makros gehackt haben, um memcpy(a,b,c) zu memcpy_s(a,c,b,c) umzuschreiben.

Anyway, wenn euch diese Warnungen so auf den Sack gehen wie mir, dann kriegt ihr die so weg:

$ cat ~/.clang-tidy
Checks: "-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling"
Ich hab keine Ahnung, wieviel Lack die clang-tidy-Leute saufen mussten, um sich diesen Scheiß schönzureden. Das bringt das ganze Projekt in Verruf, wenn sie statt sinnvoller Fehlerdiagnostik die Entwickler mit solchem Rotz nerven.

Im Übrigen, wenn ihr es noch nie gemacht habt, und unter Windows programmiert: Probiert doch mal aus, was passiert, wenn man memcpy_s so aufruft, dass destsize < bytecount ist. "Sicherer", my ass.

28.10.2024