summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-02-22 11:19:25 +0100
committerBastien Nocera <hadess@hadess.net>2022-02-23 16:21:49 +0100
commit965ba6add9825000b50b09b6cac08b55a3a1e192 (patch)
treef1d0b954407e0ed092c9d5d6de085dc46726b73b
parent52e0d04e7127ea57ebd95ae17d06fed70ca91f08 (diff)
downloadgnome-bluetooth-965ba6add9825000b50b09b6cac08b55a3a1e192.tar.gz
sendto: Fix out of bounds access
When running `bluetooth-sendto` without arguments and selecting some files, the app would try to access memory after the model list returned by gtk_file_chooser_get_files.
-rw-r--r--sendto/main.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sendto/main.c b/sendto/main.c
index 42f2c749..2f36f592 100644
--- a/sendto/main.c
+++ b/sendto/main.c
@@ -706,13 +706,14 @@ show_select_dialog(void)
if (select_dialog_response == GTK_RESPONSE_ACCEPT) {
g_autoptr(GListModel) selected_files = NULL;
- int i;
+ guint i, n_items;
selected_files = gtk_file_chooser_get_files(GTK_FILE_CHOOSER(dialog));
+ n_items = g_list_model_get_n_items(selected_files);
- files = g_new(gchar *, g_list_model_get_n_items(selected_files) + 1);
+ files = g_new(gchar *, n_items + 1);
- for (i = 0; g_list_model_get_n_items(selected_files); i++) {
+ for (i = 0; i < n_items; i++) {
g_autoptr(GFile) file = g_list_model_get_item(selected_files, i);
files[i] = g_file_get_path(file);
}