strncpy()
おそらくバッファオーバーフローから保護します。ただし、null で終了せずにオーバーフローを防ぐと、後続の文字列操作がオーバーフローする可能性が高くなります。したがって、これを防ぐために、次のことを行っています。
strncpy( dest, src, LEN );
dest[LEN - 1] = '\0';
man strncpy
与えます:
のバイト以下がコピーさ
strncpy()
れることを除いて、機能は似ています。したがって、 の最初のバイトにnull バイトがない場合、結果は null で終了しません。n
src
n
src
次のように一見無害に見えるものをnullで終了することなく:
printf( "FOO: %s\n", dest );
...クラッシュする可能性があります。
より安全で優れた代替手段はありstrncpy()
ますか?