diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-13 15:31:18 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-13 15:31:18 +0000 |
commit | 6eb4b9668c67d246a58ccb3d4ace3ac784ec7ddc (patch) | |
tree | d58973d3f250df3ac72a18770d995b397fb65213 /ext/socket/socket.c | |
parent | 1ce6d71836513ed85f575c9ae5af4f7d94fe3f80 (diff) | |
download | ruby-6eb4b9668c67d246a58ccb3d4ace3ac784ec7ddc.tar.gz ruby-6eb4b9668c67d246a58ccb3d4ace3ac784ec7ddc.tar.xz ruby-6eb4b9668c67d246a58ccb3d4ace3ac784ec7ddc.zip |
* ext/socket/socket.c (init_unixsock): path may contain NUL for
abstract unix sockets. [ruby-core:10288]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/socket.c')
-rw-r--r-- | ext/socket/socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/socket/socket.c b/ext/socket/socket.c index a0cf8353a..dc7ee77db 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)); } |