diff --git a/i3-input/ipc.c b/i3-input/ipc.c index 597a86ef..2d11f0e0 100644 --- a/i3-input/ipc.c +++ b/i3-input/ipc.c @@ -60,7 +60,7 @@ int connect_ipc(char *socket_path) { struct sockaddr_un addr; memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_LOCAL; - strcpy(addr.sun_path, socket_path); + strncpy(addr.sun_path, socket_path, sizeof(addr.sun_path) - 1); if (connect(sockfd, (const struct sockaddr*)&addr, sizeof(struct sockaddr_un)) < 0) err(EXIT_FAILURE, "Could not connect to i3"); diff --git a/i3-msg/main.c b/i3-msg/main.c index b22d550e..33bedc7c 100644 --- a/i3-msg/main.c +++ b/i3-msg/main.c @@ -175,7 +175,7 @@ int main(int argc, char *argv[]) { struct sockaddr_un addr; memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_LOCAL; - strcpy(addr.sun_path, socket_path); + strncpy(addr.sun_path, socket_path, sizeof(addr.sun_path) - 1); if (connect(sockfd, (const struct sockaddr*)&addr, sizeof(struct sockaddr_un)) < 0) err(EXIT_FAILURE, "Could not connect to i3"); diff --git a/src/ipc.c b/src/ipc.c index 1937d55d..3dd95653 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -91,7 +91,7 @@ static void ipc_send_message(int fd, const unsigned char *payload, char msg[buffer_size]; char *walk = msg; - strcpy(walk, "i3-ipc"); + strncpy(walk, "i3-ipc", buffer_size - 1); walk += strlen("i3-ipc"); memcpy(walk, &message_size, sizeof(uint32_t)); walk += sizeof(uint32_t);