Strlcat
出典: フリー百科事典『ウィキペディア(Wikipedia)』
strlcat はC言語で文字列を安全に追記するための関数である。 危険な使い方をしてしまいがちな関数 strcat や strncat の代替として、 Todd C. Miller および Theo de Raadt が開発した。
size_t strlcat (char *dst, const char *src, size_t size);
であり、ポインタ src の指すアドレスから最大で size - 1 バイトの文字列を dst の末尾に追記し、 dst の指す文字列が必ずNULL文字で終わるようにする。 これによって、dst が char 配列の場合に sizeof(dst) - strlen(dst) を size として指定すれば バッファオーバーランしないことが保証される。
strncat は同じプロトタイプを持つが、 最大で size バイトをコピーするのでNULL文字で終わるとは限らない点が strlcat と異なる。
Miller と de Raadt は OpenBSD の開発者であり、 strlcat を最初に実装した OS は OpenBSD 2.4 である。 以後、FreeBSD 3.3 を含め、Solaris や Mac OS X にも採用されている。