aboutsummaryrefslogtreecommitdiffstats
path: root/ext/socket
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-13 15:31:18 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-13 15:31:18 +0000
commit76a27adfda7bd2c4c91b8d187f6921c0a87f096f (patch)
treed58973d3f250df3ac72a18770d995b397fb65213 /ext/socket
parent62815a50bced3770a53e46e2746ff47cd7d7fb9a (diff)
downloadruby-76a27adfda7bd2c4c91b8d187f6921c0a87f096f.tar.gz
* ext/socket/socket.c (init_unixsock): path may contain NUL for
abstract unix sockets. [ruby-core:10288] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket')
-rw-r--r--ext/socket/socket.c4
1 files changed, 2 insertions, 2 deletions
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));
}