X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udevd.c;h=10d67f2c359995c861ecb94a554d855b14852b00;hb=1dadabd79b28a4cd72382abf746e9cf4c0589617;hp=24cf9c9a7cf8c5a491c63483fff09f4a91455b70;hpb=872344c41094f636fd667b9e619f8f219d814605;p=elogind.git diff --git a/udevd.c b/udevd.c index 24cf9c9a7..10d67f2c3 100644 --- a/udevd.c +++ b/udevd.c @@ -360,6 +360,7 @@ int main(int argc, char *argv[]) int csock; struct sockaddr_un saddr; struct sockaddr_un caddr; + socklen_t addrlen; socklen_t clen; pthread_t cli_tid; pthread_t mgr_msg_tid; @@ -379,6 +380,7 @@ int main(int argc, char *argv[]) saddr.sun_family = AF_LOCAL; /* use abstract namespace for socket path */ strcpy(&saddr.sun_path[1], UDEVD_SOCK_PATH); + addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1; ssock = socket(AF_LOCAL, SOCK_STREAM, 0); if (ssock == -1) { @@ -386,7 +388,7 @@ int main(int argc, char *argv[]) exit(1); } - retval = bind(ssock, &saddr, sizeof(saddr)); + retval = bind(ssock, &saddr, addrlen); if (retval < 0) { dbg("bind failed\n"); goto exit;