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/