diff -Naur vitunes-2.3/socket.c vitunes-2.3.patched/socket.c --- vitunes-2.3/socket.c 2012-01-02 16:02:11.000000000 -0500 +++ vitunes-2.3.patched/socket.c 2012-11-25 12:12:05.000000000 -0500 @@ -19,13 +19,23 @@ #include <sys/socket.h> #include <sys/un.h> #include <unistd.h> +#include <pwd.h> #include "socket.h" #include "commands.h" -#define VITUNES_SOCK "/tmp/.vitunes" +#define VITUNES_SOCK "/tmp/.vitunes-%s" +static char *get_user_name(void) { + struct passwd *ent; + ent = getpwuid(getuid()); + if(ent) + return ent->pw_name; + else + return "unknown-user"; /* just in case */ +} + int sock_send_msg(const char *msg) { @@ -38,8 +48,8 @@ return -1; addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, VITUNES_SOCK); - addr_len = sizeof(addr.sun_family) + strlen(VITUNES_SOCK) + 1; + sprintf(addr.sun_path, VITUNES_SOCK, get_user_name()); + addr_len = sizeof(addr.sun_family) + strlen(addr.sun_path) + 1; if(sendto(ret, msg, strlen(msg), 0, (struct sockaddr *) &addr, addr_len) == -1) { close(ret); @@ -58,14 +68,14 @@ socklen_t addr_len; int coe = 1; - unlink(VITUNES_SOCK); + sprintf(addr.sun_path, VITUNES_SOCK, get_user_name()); + unlink(addr.sun_path); if((ret = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) return -1; addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, VITUNES_SOCK); - addr_len = sizeof(addr.sun_family) + strlen(VITUNES_SOCK) + 1; + addr_len = sizeof(addr.sun_family) + strlen(addr.sun_path) + 1; if(bind(ret, (struct sockaddr *) &addr, addr_len) == -1) return -1;