diff --git a/inc/lektor/internal/os.h b/inc/lektor/internal/os.h index 676bbccfee8e6231b26d915aa0131e7212f1ab49..823b28325ad0f6fc44f6957e7381c9125b6e9cda 100644 --- a/inc/lektor/internal/os.h +++ b/inc/lektor/internal/os.h @@ -87,7 +87,7 @@ typedef void (*function_ptr)(void); #endif /* Set the name of a thread, OS specific */ -void lkt_thread_set_name(const char name[16]); +void lkt_thread_set_name(const char *name); /* Get the path to the currently executing binary */ int lkt_read_self_exe(char *path, size_t len); diff --git a/src/base/commands.c b/src/base/commands.c index a520b1a722baaf3585e43befcbd05079e2d7fb3e..9de3090658bef25959ac42d13343e344e7df8f25 100644 --- a/src/base/commands.c +++ b/src/base/commands.c @@ -723,7 +723,7 @@ command_plt_ctx(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX bool command_set_playback_option(struct lkt_state *srv, size_t UNUSED c, LKT_PLAYBACK_OPTION opt, - char *args[LKT_MESSAGE_MAX]) + char *args[LKT_MESSAGE_ARGS_MAX]) { RETURN_UNLESS(srv, "Invalid argument", false); long val; diff --git a/src/base/os.c b/src/base/os.c index d332b9543032666e7e75a747ce816e2bf56da107..e72407c3dc89a25cf72fa58199a3998081abd659 100644 --- a/src/base/os.c +++ b/src/base/os.c @@ -20,8 +20,13 @@ lkt_read_self_exe(char *path, size_t len) } void -lkt_thread_set_name(const char name[16]) +lkt_thread_set_name(const char *name) { + const size_t len = strlen(name); + if (len >= 16) { + LOG_FATAL("The name should at least be a 15 character string! Here the length is %zu", len); + } + #if defined(__linux__) pthread_t tid = pthread_self(); LOG_INFO("OS", "Set name to '%s' for thread %ld", name, tid); diff --git a/src/database/queue.c b/src/database/queue.c index 5d80602b08f8725ce0329b45b81e4074cfcef2e0..9e20c08c1ad44c5751e18b84e1e3e63a71f4513c 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -461,7 +461,7 @@ database_queue_next(lkt_db *db, char filepath[PATH_MAX]) safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", id); if (filepath != NULL) - strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX); + strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX - 1); else { LOG_ERROR("DB", "Failed to get file, id was %d", id); goto error; @@ -522,7 +522,7 @@ database_queue_prev(lkt_db *db, char filepath[PATH_MAX]) safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", id); if (filepath != NULL) - strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX); + strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX - 1); else { LOG_ERROR("DB", "Failed to get file, position was %d", id); goto error; diff --git a/src/net/listen.c b/src/net/listen.c index e8f6cdd120f546c14a371427b89bed126b80ff4b..aabd69127be37a0410fea0372ee42b9fb5f362e5 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -999,6 +999,7 @@ handle_queue_events(struct lkt_state *srv) lkt_event evt; char *string = NULL; + char *arguments_to_pass[LKT_MESSAGE_ARGS_MAX]; redo: evt = lkt_queue_handle(&srv->queue); @@ -1007,7 +1008,9 @@ redo: __CASE(PLAY_POS, { string = LKT_ALLOC_ARRAY(char, BUFFER_MAX); safe_snprintf(string, BUFFER_MAX, "%ld", (size_t)evt.attr); - command_play(srv, &string); + arguments_to_pass[0] = string; + arguments_to_pass[1] = NULL; + command_play(srv, arguments_to_pass); free(string); })