Subject: bug#23068: 25.1.50; unix socket address in abstract namespace

From: Lars Magne Ingebrigtsen <[email-masked]>
Date: Sun, 20 Mar 2016 18:11:09 +0100

Mark Oteiza <[email-masked]> writes:

> and I'm able to connect to it otherwise. The above elisp does:
>
>   socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 8
>   connect(8, {sa_family=AF_LOCAL, sun_path=@""}, 110) = -1
> ECONNREFUSED (Connection refused)
>   close(8) 

Yeah, this code in conv_lisp_to_sockaddr doesn't look very correct:

  else if (STRINGP (address))
    {
#ifdef HAVE_LOCAL_SOCKETS
      if (family == AF_LOCAL)
	{
	  struct sockaddr_un *sockun = (struct sockaddr_un *) sa;
	  cp = SDATA (address);
	  for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++)
	    sockun->sun_path[i] = *cp++;
	  sa->sa_family = family;
	}
#endif
      return;
    }

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no