C言語

続・libc なんていらないもん!

たけおかさんにwrite()くらいしてほしいと突っ込みをいただいたので、やってみました。Linux 32bit int write(int filedes, const void *buf, unsigned int nbyte) { int rv; asm("movl $4,%%eax\n\t" "movl %3,%%edx\n\t" "movl %2,%%ecx\n\t" "movl %1,%%e…

libc なんていらないもん!

libc 無しでとりあえず動くプログラムを、LinuxやMac OSで作ってみた。 _exit()のため、アセンブリ言語のコードがあります。なかなかおもしろいけど、これをやるくらいなら全部アセンブリ言語で書いた方がいいな〜Linux 32bit int main(int argc, char *argv…

バッファオーバーフローを見つける

一昨日、メンバーからSOSメールがありました。C++で、数キロバイト new するだけで、メモリ不足の例外が飛んでしまうとうい問題でした。 昨日も、今日も解決できていなかったようなので、私も調査に参加してたところ・・・問題のnewより手前でアロケーション…

意外と陥るかも?ポインタの誤用

通過するTCP/UDPのポート番号を覗く様なプログラムを書いていたメンバーから、 実際に送信しているポート番号とプログラムが認識するポート番号が違っていると相談をうけました。 u_int8_t *packet; struct ip *ip = packet + sizeof(struct ether_header); …