From 646f76c58bc81b2d41163b2e9dfcf279ebd9e887 Mon Sep 17 00:00:00 2001 From: Radoslaw Kaczorowski Date: Mon, 17 Jun 2019 11:19:22 +0700 Subject: define DLT_PATH_MAX for max path buffer length DLT limits the path length and does not do anything else to determine the actual value, because the least that is supported on any system that DLT runs on is 1024 bytes. Signed-off-by: Vo Trung Chi --- src/lib/dlt_user.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/lib') diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index e0939b1..cab3223 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -83,8 +83,8 @@ static bool dlt_user_initialised = false; static int dlt_user_freeing = 0; #ifndef DLT_USE_UNIX_SOCKET_IPC -static char dlt_user_dir[NAME_MAX + 1]; -static char dlt_daemon_fifo[NAME_MAX + 1]; +static char dlt_user_dir[DLT_PATH_MAX]; +static char dlt_daemon_fifo[DLT_PATH_MAX]; #endif static sem_t dlt_mutex; @@ -230,7 +230,7 @@ static DltReturnValue dlt_initialize_socket_connection(void) remote.sun_family = AF_UNIX; snprintf(dltSockBaseDir, DLT_IPC_PATH_MAX, "%s/dlt", DLT_USER_IPC_PATH); - strncpy(remote.sun_path, dltSockBaseDir, sizeof(dltSockBaseDir)); + strncpy(remote.sun_path, dltSockBaseDir, sizeof(remote.sun_path)); if (strlen(DLT_USER_IPC_PATH) > DLT_IPC_PATH_MAX) dlt_vlog(LOG_INFO, @@ -267,11 +267,11 @@ static DltReturnValue dlt_initialize_socket_connection(void) #else /* setup fifo*/ static DltReturnValue dlt_initialize_fifo_connection(void) { - char filename[DLT_USER_MAX_FILENAME_LENGTH]; + char filename[DLT_PATH_MAX]; int ret; - snprintf(dlt_user_dir, NAME_MAX, "%s/dltpipes", dltFifoBaseDir); - snprintf(dlt_daemon_fifo, NAME_MAX, "%s/dlt", dltFifoBaseDir); + snprintf(dlt_user_dir, DLT_PATH_MAX, "%s/dltpipes", dltFifoBaseDir); + snprintf(dlt_daemon_fifo, DLT_PATH_MAX, "%s/dlt", dltFifoBaseDir); ret = mkdir(dlt_user_dir, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH | S_ISVTX); if ((ret == -1) && (errno != EEXIST)) { @@ -293,7 +293,7 @@ static DltReturnValue dlt_initialize_fifo_connection(void) } /* create and open DLT user FIFO */ - snprintf(filename, DLT_USER_MAX_FILENAME_LENGTH, "%s/dlt%d", dlt_user_dir, getpid()); + snprintf(filename, DLT_PATH_MAX, "%s/dlt%d", dlt_user_dir, getpid()); /* Try to delete existing pipe, ignore result of unlink */ unlink(filename); @@ -354,7 +354,9 @@ DltReturnValue dlt_init(void) return DLT_RETURN_ERROR; } - strncpy(dltFifoBaseDir, DLT_USER_IPC_PATH, sizeof(DLT_USER_IPC_PATH)); + strncpy(dltFifoBaseDir, DLT_USER_IPC_PATH, DLT_PATH_MAX); + dltFifoBaseDir[DLT_PATH_MAX - 1] = 0; + /* check environment variables */ dlt_check_envvar(); @@ -775,7 +777,7 @@ DltReturnValue dlt_free(void) uint32_t i; int ret = 0; #ifndef DLT_USE_UNIX_SOCKET_IPC - char filename[DLT_USER_MAX_FILENAME_LENGTH]; + char filename[DLT_PATH_MAX]; #endif if (dlt_user_freeing != 0) @@ -799,7 +801,7 @@ DltReturnValue dlt_free(void) if (dlt_user.dlt_user_handle != DLT_FD_INIT) { close(dlt_user.dlt_user_handle); dlt_user.dlt_user_handle = DLT_FD_INIT; - snprintf(filename, DLT_USER_MAX_FILENAME_LENGTH, "%s/dlt%d", dlt_user_dir, getpid()); + snprintf(filename, DLT_PATH_MAX, "%s/dlt%d", dlt_user_dir, getpid()); unlink(filename); } -- cgit v1.2.1