58 lines
1.6 KiB
Diff
58 lines
1.6 KiB
Diff
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;
|