From 2f98cbe483699a2246204d2a035c837a8b6d22d5 Mon Sep 17 00:00:00 2001 From: Daniel Cheng Date: Tue, 13 Apr 2021 22:57:02 +0000 Subject: [PATCH] Remove function pointer casts when calling xdg_run_command_on_dirs(). The function pointer casts silence the compiler and allow the code to build (and even run in the typical case). However, when building with control flow integrity checks, the runtime (rightfully) complains about calling a function via a mismatched function pointer type. --- gio/xdgmime/xdgmime.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gio/xdgmime/xdgmime.c b/gio/xdgmime/xdgmime.c index 338211818..770a4dd0b 100644 --- a/gio/xdgmime/xdgmime.c +++ b/gio/xdgmime/xdgmime.c @@ -138,7 +138,8 @@ xdg_dir_time_list_free (XdgDirTimeList *list) } static int -xdg_mime_init_from_directory (const char *directory) +xdg_mime_init_from_directory (const char *directory, + void *user_data) { char *file_name; struct stat st; @@ -404,10 +405,11 @@ xdg_check_file (const char *file_path, static int xdg_check_dir (const char *directory, - int *invalid_dir_list) + void *user_data) { int invalid, exists; char *file_name; + int* invalid_dir_list = user_data; assert (directory != NULL); @@ -462,8 +464,7 @@ xdg_check_dirs (void) for (list = dir_time_list; list; list = list->next) list->checked = XDG_CHECKED_UNCHECKED; - xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_check_dir, - &invalid_dir_list); + xdg_run_command_on_dirs (xdg_check_dir, &invalid_dir_list); if (invalid_dir_list) return TRUE; @@ -519,8 +520,7 @@ xdg_mime_init (void) icon_list = _xdg_mime_icon_list_new (); generic_icon_list = _xdg_mime_icon_list_new (); - xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_mime_init_from_directory, - NULL); + xdg_run_command_on_dirs (xdg_mime_init_from_directory, NULL); need_reread = FALSE; }