ruby-changes:11081
From: akr <ko1@a...>
Date: Sat, 28 Feb 2009 18:29:41 +0900 (JST)
Subject: [ruby-changes:11081] Ruby:r22676 (trunk): * ext/socket/ancdata.c (ancillary_unix_rights): check message type.
akr 2009-02-28 18:29:26 +0900 (Sat, 28 Feb 2009) New Revision: 22676 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22676 Log: * ext/socket/ancdata.c (ancillary_unix_rights): check message type. Modified files: trunk/ChangeLog trunk/ext/socket/ancdata.c trunk/test/socket/test_ancdata.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 22675) +++ ChangeLog (revision 22676) @@ -1,3 +1,7 @@ +Sat Feb 28 18:28:58 2009 Tanaka Akira <akr@f...> + + * ext/socket/ancdata.c (ancillary_unix_rights): check message type. + Sat Feb 28 16:18:39 2009 Tanaka Akira <akr@f...> * lib/net/http.rb: suppress warnings of non-existing instance variable Index: ext/socket/ancdata.c =================================================================== --- ext/socket/ancdata.c (revision 22675) +++ ext/socket/ancdata.c (revision 22676) @@ -254,6 +254,14 @@ ancillary_unix_rights(VALUE self) { #ifdef SCM_RIGHTS + int level, type; + + level = ancillary_level(self); + type = ancillary_type(self); + + if (level != SOL_SOCKET || type != SCM_RIGHTS) + rb_raise(rb_eTypeError, "SCM_RIGHTS ancillary data expected"); + VALUE v = rb_attr_get(self, rb_intern("unix_rights")); return v; #else Index: test/socket/test_ancdata.rb =================================================================== --- test/socket/test_ancdata.rb (revision 22675) +++ test/socket/test_ancdata.rb (revision 22676) @@ -55,4 +55,12 @@ assert(!ancdata.cmsg_is?(:IP, :PKTINFO)) end end + + if defined?(Socket::SCM_RIGHTS) && defined?(Socket::SCM_TIMESTAMP) + def test_unix_rights + assert_raise(TypeError) { + Socket::AncillaryData.int(:UNIX, :SOL_SOCKET, :TIMESTAMP, 1).unix_rights + } + end + end end if defined? Socket::AncillaryData -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/