summaryrefslogtreecommitdiff
path: root/libs/fluidsynth/src/fluid_sfont.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/fluidsynth/src/fluid_sfont.c')
-rw-r--r--libs/fluidsynth/src/fluid_sfont.c22
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)