diff --git a/src/lib/bml/bml.c b/src/lib/bml/bml.c index 19d88330f..ab1429773 100644 --- a/src/lib/bml/bml.c +++ b/src/lib/bml/bml.c @@ -130,12 +130,12 @@ bmpipc_connect (void) return FALSE; } address.sun_family = PF_LOCAL; - strcpy (address.sun_path, socket_file); + strcpy (&address.sun_path[1], socket_file); while (retries < 3) { int res; if ((res = connect (server_socket, (struct sockaddr *) &address, - sizeof (address))) == 0) { + sizeof (sa_family_t) + strlen (socket_file) + 1)) == 0) { TRACE ("server connected after %d retries\n", retries); break; } else { @@ -750,12 +750,10 @@ bml_setup (void) #ifdef DEV_BUILD if (getenv ("BMLIPC_DEBUG")) { // allows to run this manually, we will then not spawn a new one here - snprintf (socket_file, (SOCKET_PATH_MAX - 1), "/tmp/bml.sock"); + snprintf (socket_file, (SOCKET_PATH_MAX - 1), "bml.sock"); } else { #endif - snprintf (socket_file, (SOCKET_PATH_MAX - 1), "/tmp/bml.%d.XXXXXX", - (int) getpid ()); - mktemp (socket_file); + snprintf (socket_file, (SOCKET_PATH_MAX - 1), "bml.%d", (int) getpid ()); #ifdef DEV_BUILD } #endif diff --git a/src/lib/bml/bmlhost.c b/src/lib/bml/bmlhost.c index 7d9b8406d..a4fb28f15 100644 --- a/src/lib/bml/bmlhost.c +++ b/src/lib/bml/bmlhost.c @@ -399,7 +399,7 @@ main (int argc, char **argv) int server_socket, client_socket; socklen_t addrlen; ssize_t size; - struct sockaddr_un address; + struct sockaddr_un address = { 0, }; int running = TRUE; BmlIpcBuf bo = IPC_BUF_INIT, bi = IPC_BUF_INIT; BmAPI id; @@ -426,8 +426,9 @@ main (int argc, char **argv) unlink (socket_file); address.sun_family = PF_LOCAL; - strcpy (address.sun_path, socket_file); - if (bind (server_socket, (struct sockaddr *) &address, sizeof (address)) != 0) { + strcpy (&address.sun_path[1], socket_file); + if (bind (server_socket, (struct sockaddr *) &address, + sizeof (sa_family_t) + strlen (socket_file) + 1) != 0) { TRACE ("socket path already in use!\n"); } listen (server_socket, /* backlog of pending connections */ 5);