aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-06-05 16:11:47 +0000
committerngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-06-05 16:11:47 +0000
commit6ac9818e1f685e0e851758a816a11b2bcdacc321 (patch)
tree106543a9b3e83f35b1288e30b47e11b1bc061b10
parent754773e93c4ddde89cca738dde002ec154511463 (diff)
downloadruby-6ac9818e1f685e0e851758a816a11b2bcdacc321.tar.gz
* ext/socket/ancdata.c (bsock_sendmsg_internal): all arguments are
parsed even on systems without HAVE_STRUCT_MSGHDR_MSG_CONTROL to prevent SEGV caused by passing Qnil to RARRAY_LENINT and to preserve behavior before r50776. [Bug #11224] [ruby-core:69468] [Bug #11225] [ruby-core:69469] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--ext/socket/ancdata.c5
2 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 71f4fe38b1..7343398ed0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Sat Jun 6 01:00:06 2015 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): all arguments are
+ parsed even on systems without HAVE_STRUCT_MSGHDR_MSG_CONTROL
+ to prevent SEGV caused by passing Qnil to RARRAY_LENINT and
+ to preserve behavior before r50776.
+ [Bug #11224] [ruby-core:69468] [Bug #11225] [ruby-core:69469]
+
Fri Jun 5 22:37:42 2015 Koichi Sasada <ko1@atdot.net>
* class.c (ins_methods_push): change 3rd parameter's type
diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c
index ea55534d97..756cf7ed64 100644
--- a/ext/socket/ancdata.c
+++ b/ext/socket/ancdata.c
@@ -1151,11 +1151,8 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
if (argc == 0)
rb_raise(rb_eArgError, "mesg argument required");
-#if defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL)
+
rb_scan_args(argc, argv, "12*", &data, &vflags, &dest_sockaddr, &controls);
-#else
- rb_scan_args(argc, argv, "12", &data, &vflags, &dest_sockaddr);
-#endif
StringValue(data);
controls_num = RARRAY_LENINT(controls);