[Pcsclite-cvs-commit] r6043 - /trunk/PCSC/src/winscard_msg_srv.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Sat Oct 15 16:44:09 UTC 2011


Author: rousseau
Date: Sat Oct 15 16:44:08 2011
New Revision: 6043

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=6043
Log:
InitializeSocket(): use a union for sockaddr structsas suggested by
systemd sample code at
http://0pointer.de/blog/projects/socket-activation.html

Modified:
    trunk/PCSC/src/winscard_msg_srv.c

Modified: trunk/PCSC/src/winscard_msg_srv.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_msg_srv.c?rev=6043&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_msg_srv.c (original)
+++ trunk/PCSC/src/winscard_msg_srv.c Sat Oct 15 16:44:08 2011
@@ -98,7 +98,11 @@
  */
 INTERNAL int32_t InitializeSocket(void)
 {
-	struct sockaddr_un serv_adr;
+	union
+	{
+		struct sockaddr sa;
+		struct sockaddr_un un;
+	} sa;
 
 	/*
 	 * Create the common shared connection socket
@@ -110,13 +114,12 @@
 		return -1;
 	}
 
-	serv_adr.sun_family = AF_UNIX;
-	strncpy(serv_adr.sun_path, PCSCLITE_CSOCK_NAME,
-		sizeof(serv_adr.sun_path));
+	memset(&sa, 0, sizeof sa);
+	sa.un.sun_family = AF_UNIX;
+	strncpy(sa.un.sun_path, PCSCLITE_CSOCK_NAME, sizeof sa.un.sun_path);
 	(void)remove(PCSCLITE_CSOCK_NAME);
 
-	if (bind(commonSocket, (struct sockaddr *) &serv_adr,
-			sizeof(serv_adr.sun_family) + strlen(serv_adr.sun_path) + 1) < 0)
+	if (bind(commonSocket, &sa.sa, sizeof sa) < 0)
 	{
 		Log2(PCSC_LOG_CRITICAL, "Unable to bind common socket: %s",
 			strerror(errno));




More information about the Pcsclite-cvs-commit mailing list