Etsushi Kato
ekato****@ees*****
2004年 2月 12日 (木) 15:48:12 JST
On 2004/02/12, at 4:10 AM, TOKUNAGA Hiroyuki wrote: > execlp(command, command, NULL)に変更しておきました。御指摘ありがとうござ > います。 変更ありがとうございます。あと、 > fst.st_uid != getuid()のチェックを外すのはセキュリティ的にあまりよろし > くないような気がします。個人でわかってて外す分には構わないとは思うのですが。 についてですが、どうも Mac OS X の fstat(2) は socket に対して st_uid などが使えないというバグがあるようです。man page には、 STAT(2) BSD System Calls Manual STAT(2) NAME stat, lstat, fstat - get file status <中略> BUGS Applying fstat to a socket (and thus to a pipe) returns a zero'd buffer, except for the blocksize field, and a unique device and inode number. STANDARDS The stat() and fstat() function calls are expected to conform to IEEE Std 1003.1-1988 (``POSIX.1''). HISTORY An lstat() function call appeared in 4.2BSD. 4th Berkeley Distribution April 19, 1994 4th Berkeley Distribution とあり、実際に、fst の中身を見たところ、fst.st_ino, fst.st_mode,fst.st_blksize のみ使える情報が存在していました… 困ったものです。ということで、descriptor に対してではなく、socket のパスそのものの st_uid を確認するほうが、ポータブルなのかもしれません。 -- Etsushi Kato ekato****@ees*****