Blob Blame History Raw
--- geeqie-2.0.1.orig/src/remote.c	2022-08-12 05:32:40.000000000 -0400
+++ geeqie-2.0.1/src/remote.c	2022-11-14 11:53:11.789791422 -0500
@@ -248,7 +248,6 @@
 {
 	RemoteConnection *rc;
 	struct sockaddr_un addr;
-	gint sun_path_len;
 	gint fd;
 	GIOChannel *channel;
 
@@ -261,9 +260,11 @@
 	fd = socket(PF_UNIX, SOCK_STREAM, 0);
 	if (fd == -1) return NULL;
 
+	if (strlen(path) > sizeof(addr.sun_path)) return NULL;
+	strncpy(addr.sun_path, path, sizeof(addr.sun_path));
+
 	addr.sun_family = AF_UNIX;
-	sun_path_len = MIN(strlen(path) + 1, UNIX_PATH_MAX);
-	strncpy(addr.sun_path, path, sun_path_len);
+
 	if (bind(fd, (const struct sockaddr*)&addr, sizeof(addr)) == -1 ||
 	    listen(fd, REMOTE_SERVER_BACKLOG) == -1)
 		{
@@ -302,7 +303,6 @@
 	RemoteConnection *rc;
 	struct stat st;
 	struct sockaddr_un addr;
-	gint sun_path_len;
 	gint fd;
 
 	if (stat(path, &st) != 0 || !S_ISSOCK(st.st_mode)) return NULL;
@@ -310,9 +310,11 @@
 	fd = socket(PF_UNIX, SOCK_STREAM, 0);
 	if (fd == -1) return NULL;
 
+	if (strlen(path) > sizeof(addr.sun_path)) return NULL;
+	strncpy(addr.sun_path, path, sizeof(addr.sun_path));
+
 	addr.sun_family = AF_UNIX;
-	sun_path_len = MIN(strlen(path) + 1, UNIX_PATH_MAX);
-	strncpy(addr.sun_path, path, sun_path_len);
+
 	if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1)
 		{
 		DEBUG_1("error connecting to socket: %s", strerror(errno));