Date: Mon, 21 Oct 96 03:18:14 +0100 From: Jean-Marc Zucconi <jmz@cabri.obs-besancon.fr> To: freebsd-current@freebsd.org Subject: socket (AF_UNIX) bug Message-ID: <9610210218.AA09736@cabri.obs-besancon.fr>
next in thread | raw e-mail | index | archive | help
The following code creates a socket whose name is 1 char too
short. A workaround is to add 1 to addrlen before calling bind, but I
think that the code should work as is.
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/un.h>
main ()
{
int s;
struct sockaddr_un sockaddr;
char path[256];
int addrlen;
strcpy (path, "/tmp/zxyz");
unlink (path);
s = socket (AF_UNIX, SOCK_STREAM, 0);
memset ((void *)&sockaddr, 0, sizeof(sockaddr));
sockaddr.sun_family = AF_UNIX;
strncpy (sockaddr.sun_path, path, sizeof(sockaddr.sun_path));
addrlen = sizeof(sockaddr.sun_family) + strlen(path);
if (bind (s, (struct sockaddr *)&sockaddr, addrlen) < 0)
perror ("bind");
system ("ls -l /tmp/zx*");
close (s);
}
Jean-Marc
_____________________________________________________________________________
Jean-Marc Zucconi Observatoire de Besancon F 25010 Besancon cedex
PGP Key: finger jmz@cabri.obs-besancon.fr
=============================================================================
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9610210218.AA09736>
