strlcpy
strlcpy はC
概要
size_t strlcpy(char *dst, const char *src, size_t size);
ポインタsrc
のsize - 1
バイトのdst
にコピーし、dst
のdst
のバッファのsize
に
strncpy
はchar *strncpy(char *dest, const char *src, size_t count)
[2]をcount
バイトをコピーするためNULdst
のstrlcpy
と
実装 状 況
ToddとTheoはOpenBSDのstrlcpy
を
Microsoft Visual C++にはstrcpy_s
がstrcpy_s
はC11
危険 な利用 例
strlcpy
の
char cmd[] = "rm *.bak";
char buf[5];
strlcpy(buf, cmd, sizeof(buf));
system(buf);
sizeof(buf)
が5
であるため、5 - 1
すなわち4
"rm *"
(カレントディレクトリ
strlcpy
の
関連 項目
脚注
注釈
出典
- ^ strlcpy and strlcat - consistent, safe, string copy and concatenation. - 1999 USENIX Annual Technical Conference, June 6-11, 1999, Monterey, California, USA
- ^ strncpy, strncpy_s - cppreference.com
- ^ libc-alphaメーリングリストでの
議論 [1][2]より - ^ strcpy_s, wcscpy_s, _mbscpy_s, _mbscpy_s_l | Microsoft Learn
- ^ strcpy, strcpy_s - cppreference.com
外部 リンク
strlcpy(3)
– FreeBSD Library Functions Manual Pages (en)