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

ruby-changes:10833

From: akr <ko1@a...>
Date: Wed, 18 Feb 2009 21:48:31 +0900 (JST)
Subject: [ruby-changes:10833] Ruby:r22403 (trunk): * ext/socket/ancdata.c (bsock_recvmsg_internal): prevent misalignment.

akr	2009-02-18 21:48:11 +0900 (Wed, 18 Feb 2009)

  New Revision: 22403

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22403

  Log:
    * ext/socket/ancdata.c (bsock_recvmsg_internal): prevent misalignment.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/ancdata.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22402)
+++ ChangeLog	(revision 22403)
@@ -1,6 +1,10 @@
+Wed Feb 18 21:47:37 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/ancdata.c (bsock_recvmsg_internal): prevent misalignment.
+
 Wed Feb 18 21:34:30 2009  Tanaka Akira  <akr@f...>
 
-	* ext/socket/ancdata.c (bsock_sendmsg_internal): avoid misalignment.
+	* ext/socket/ancdata.c (bsock_sendmsg_internal): prevent misalignment.
 
 Wed Feb 18 21:09:43 2009  Tanaka Akira  <akr@f...>
 
Index: ext/socket/ancdata.c
===================================================================
--- ext/socket/ancdata.c	(revision 22402)
+++ ext/socket/ancdata.c	(revision 22403)
@@ -1117,7 +1117,11 @@
 #if defined(HAVE_ST_MSG_CONTROL)
     struct cmsghdr *cmh;
     size_t maxctllen;
-    char ctlbuf0[4096], *ctlbuf;
+    union {
+        char bytes[4096];
+        struct cmsghdr align;
+    } ctlbuf0;
+    char *ctlbuf;
     VALUE ctl_str = Qnil;
 #endif
 
@@ -1170,7 +1174,7 @@
 
 #if defined(HAVE_ST_MSG_CONTROL)
     if (maxctllen <= sizeof(ctlbuf0))
-        ctlbuf = ctlbuf0;
+        ctlbuf = ctlbuf0.bytes;
     else {
         if (NIL_P(ctl_str))
             ctl_str = rb_str_tmp_new(maxctllen);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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