Fix ASAN build issue 31/233631/1
authorHwankyu Jhun <h.jhun@samsung.com>
Mon, 18 May 2020 03:38:26 +0000 (12:38 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Mon, 18 May 2020 03:38:26 +0000 (12:38 +0900)
Change-Id: Ife64bd725926ffac0b1cb4581b1b917ca3dd93bc
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/hydra/src/launchpad_hydra.c

index f2c7779487a3a0429dad098a42001d8bdcc9b5af..3b945559442452bb9d55db5efe995feab6db6e14 100644 (file)
@@ -252,37 +252,35 @@ static int __handle_sigchld_event(sd_event_source *s,
        return 0;
 }
 
-static int __create_client_socket(const char *path)
+static int __create_client_socket(int type, int id)
 {
        struct sockaddr_un addr = { 0, };
        int retry = CONNECT_RETRY_COUNT;
        int fd;
 
-       if (sizeof(addr.sun_path) <= strlen(path)) {
-               _E("lenght of path is too long");
-               return -1;
-       }
-
        fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
        if (fd < 0) {
-               _E("Failed to create socket(%s). errno(%d)", path, errno);
+               _E("Failed to create socket(%d:%d). errno(%d)",
+                               type, id, errno);
                return -1;
        }
 
        addr.sun_family = AF_UNIX;
-       strncpy(addr.sun_path, path, sizeof(addr.sun_path));
-       addr.sun_path[sizeof(addr.sun_path) - 1] = '\0';
+       snprintf(addr.sun_path, sizeof(addr.sun_path),
+                       "%s/daemons/%d/%s%d-%d",
+                       SOCKET_PATH, getuid(), HYDRA_LOADER_SOCKET_NAME,
+                       type, id);
        while (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
                if (errno != ETIMEDOUT || retry <= 0) {
                        _E("Failed to connect socket(%s). errno(%d)",
-                                       path, errno);
+                                       addr.sun_path, errno);
                        close(fd);
                        return -1;
                }
 
                usleep(CONNECT_RETRY_TIME);
                retry--;
-               _W("Retry(%d) to connect %s", retry, path);
+               _W("Retry(%d) to connect %s", retry, addr.sun_path);
        }
 
        return fd;
@@ -290,7 +288,6 @@ static int __create_client_socket(const char *path)
 
 int __connect_to_launchpad_hydra(int type, int id)
 {
-       char path[PATH_MAX];
        int fd;
        int send_ret;
        pid_t client_pid;
@@ -298,10 +295,7 @@ int __connect_to_launchpad_hydra(int type, int id)
 
        _D("[hydra] enter, type: %d", type);
 
-       snprintf(path, sizeof(path), "%s/daemons/%d/%s%d-%d",
-                       SOCKET_PATH, getuid(), HYDRA_LOADER_SOCKET_NAME,
-                       type, id);
-       fd = __create_client_socket(path);
+       fd = __create_client_socket(type, id);
        if (fd < 0)
                return -1;