この情報源は、Jon Erickson の著書Hacking: The Art of Exploitationで見つけました。
userid = getuid(); // get the real user ID
// Writing data
if(write(fd, &userid, 4) == -1) // write user ID before note data
fatal("in main() while writing userid to file");
write(fd, "\n", 1); // terminate line
このコードをコンパイルしようとしたところ、私が書いたファイルの userid (上記のコードで書いたもの) が正しくないことがわかりました。彼らは奇妙な文字を書いただけです(ここに書くことは重要ではないと思います)。int
したがって、問題は、 を必要とする関数にを渡そうとしてchar *
いることです。そのため、書き込みたいファイルの結果が false です。
これはバグですよね?