diff options
Diffstat (limited to 'libs/fluidsynth/src/fluid_sfont.c')
-rw-r--r-- | libs/fluidsynth/src/fluid_sfont.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/libs/fluidsynth/src/fluid_sfont.c b/libs/fluidsynth/src/fluid_sfont.c index 548a80abce..d0ce264d0c 100644 --- a/libs/fluidsynth/src/fluid_sfont.c +++ b/libs/fluidsynth/src/fluid_sfont.c @@ -24,7 +24,27 @@ void *default_fopen(const char *path) { - return FLUID_FOPEN(path, "rb"); + FILE* handle; + + if(!fluid_file_test(path, G_FILE_TEST_EXISTS)) + { + FLUID_LOG(FLUID_ERR, "fluid_sfloader_load(): Unable to load non-existent file. ('%s')", path); + return NULL; + } + + if(!fluid_file_test(path, G_FILE_TEST_IS_REGULAR)) + { + FLUID_LOG(FLUID_ERR, "fluid_sfloader_load(): Refusing to load non-regular file! ('%s')", path); + return NULL; + } + + if((handle = FLUID_FOPEN(path, "rb")) == NULL) + { + FLUID_LOG(FLUID_ERR, "fluid_sfloader_load(): Specified file does not exists or insufficient permissions to open it! ('%s')", path); + return NULL; + } + + return handle; } int default_fclose(void *handle) |