ruby-changes:9340
From: yugui <ko1@a...>
Date: Fri, 19 Dec 2008 20:37:46 +0900 (JST)
Subject: [ruby-changes:9340] Ruby:r20878 (ruby_1_9_1): merges r20847 from trunk into ruby_1_9_1.
yugui 2008-12-19 20:37:25 +0900 (Fri, 19 Dec 2008) New Revision: 20878 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20878 Log: merges r20847 from trunk into ruby_1_9_1. * ext/socket/socket.c (unix_recv_io): relax msg_controllen error check. Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/ext/socket/socket.c Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 20877) +++ ruby_1_9_1/ChangeLog (revision 20878) @@ -1,3 +1,8 @@ +Wed Dec 17 19:39:44 2008 Tanaka Akira <akr@f...> + + * ext/socket/socket.c (unix_recv_io): relax msg_controllen error + check. + Wed Dec 17 19:37:30 2008 Tanaka Akira <akr@f...> * ext/pty/extconf.rb: check util.h for OpenBSD. Index: ruby_1_9_1/ext/socket/socket.c =================================================================== --- ruby_1_9_1/ext/socket/socket.c (revision 20877) +++ ruby_1_9_1/ext/socket/socket.c (revision 20878) @@ -2118,9 +2118,14 @@ rb_sys_fail("recvmsg(2)"); #if FD_PASSING_BY_MSG_CONTROL - if (arg.msg.msg_controllen != CMSG_SPACE(sizeof(int))) { + if (arg.msg.msg_controllen < CMSG_LEN(sizeof(int))) { rb_raise(rb_eSocket, - "file descriptor was not passed (msg_controllen=%d, %d expected)", + "file descriptor was not passed (msg_controllen=%d smaller than CMSG_LEN(sizeof(int))=%d)", + (int)arg.msg.msg_controllen, (int)CMSG_LEN(sizeof(int))); + } + if (CMSG_SPACE(sizeof(int)) < arg.msg.msg_controllen) { + rb_raise(rb_eSocket, + "file descriptor was not passed (msg_controllen=%d bigger than CMSG_SPACE(sizeof(int))=%d)", (int)arg.msg.msg_controllen, (int)CMSG_SPACE(sizeof(int))); } if (cmsg.hdr.cmsg_len != CMSG_LEN(sizeof(int))) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/