From 6eb4b9668c67d246a58ccb3d4ace3ac784ec7ddc Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 13 Feb 2007 15:31:18 +0000 Subject: * 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 --- ext/socket/socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext') 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)); } -- cgit