[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]