summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/socket/socket.c4
-rw-r--r--version.h6
3 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 6a911e8aee..1371874278 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Feb 14 00:30:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (init_unixsock): path may contain NUL for
+ abstract unix sockets. [ruby-core:10288]
+
Tue Feb 13 02:21:12 2007 Sam Roberts <sroberts@uniserve.com>
* io.c (rb_f_syscall): Fix buffer overflow with syscall
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index a0cf8353a1..dc7ee77db4 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -1602,7 +1602,7 @@ init_unixsock(VALUE sock, VALUE path, int server)
rb_raise(rb_eArgError, "too long unix socket path (max: %dbytes)",
(int)sizeof(sockaddr.sun_path)-1);
}
- strcpy(sockaddr.sun_path, StringValueCStr(path));
+ memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
if (server) {
status = bind(fd, (struct sockaddr*)&sockaddr, sizeof(sockaddr));
@@ -1628,8 +1628,8 @@ init_unixsock(VALUE sock, VALUE path, int server)
if (server) listen(fd, 5);
init_sock(sock, fd);
- GetOpenFile(sock, fptr);
if (server) {
+ GetOpenFile(sock, fptr);
fptr->path = strdup(RSTRING_PTR(path));
}
diff --git a/version.h b/version.h
index db3ad3c981..6fcbbfa0a1 100644
--- a/version.h
+++ b/version.h
@@ -1,7 +1,7 @@
#define RUBY_VERSION "1.9.0"
-#define RUBY_RELEASE_DATE "2007-02-13"
+#define RUBY_RELEASE_DATE "2007-02-14"
#define RUBY_VERSION_CODE 190
-#define RUBY_RELEASE_CODE 20070213
+#define RUBY_RELEASE_CODE 20070214
#define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 2
-#define RUBY_RELEASE_DAY 13
+#define RUBY_RELEASE_DAY 14
RUBY_EXTERN const char ruby_version[];
RUBY_EXTERN const char ruby_release_date[];