From 1b53a9638e56b910141a7fea0428657410b5ff91 Mon Sep 17 00:00:00 2001 From: fedir Date: Thu, 22 May 2025 11:02:31 +0200 Subject: [PATCH] Added dialogue file existence checks --- src/ui-socket.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ui-socket.c b/src/ui-socket.c index 5a44872..33f56c3 100644 --- a/src/ui-socket.c +++ b/src/ui-socket.c @@ -244,9 +244,15 @@ int interactive_access(const char *filename, struct process_info proc_info, // the user might specify a different file in the dialogue, so we need to // check if it is valid - while (source_access(response.filename, F_OK)) { + while ( + source_access(response.filename, F_OK) || + !(strncmp(response.filename, filename, strlen(response.filename)) == 0 && + ((strlen(response.filename) < strlen(filename) && + response.filename[strlen(response.filename) - 1] == '/') || + (strlen(response.filename) == strlen(filename))))) { // if it is invalid, just ask again. - fprintf(stderr, "[ICFS] Filename returned by zenty wasn't correct: %s\n", + fprintf(stderr, + "[ICFS] Filename returned by access dialogue wasn't correct: %s\n", response.filename); free(response.filename); response = ask_access(filename, proc_info);