aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/socket/ancdata.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f1e76cb343..de4535fce6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu May 9 22:00:35 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): controls_num should
+ not be negative.
+
Thu May 9 21:09:57 2013 Tanaka Akira <akr@fsij.org>
* file.c, ext/etc/etc.c, ext/socket/unixsocket.c,
diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c
index db5e7fd657..3e6431ebbf 100644
--- a/ext/socket/ancdata.c
+++ b/ext/socket/ancdata.c
@@ -1153,7 +1153,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
data = argv[0];
if (1 < argc) vflags = argv[1];
if (2 < argc) dest_sockaddr = argv[2];
- controls_num = argc - 3;
+ controls_num = 3 < argc ? argc - 3 : 0;
#if defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL)
if (3 < argc) { controls_ptr = &argv[3]; }
#endif