diff --git a/vendored/libfuse/lib/cpu.cpp b/vendored/libfuse/lib/cpu.cpp index c8566d0a..b16e19ec 100644 --- a/vendored/libfuse/lib/cpu.cpp +++ b/vendored/libfuse/lib/cpu.cpp @@ -136,6 +136,12 @@ CPU::cpu2core() ifs >> core_id; + if(!ifs) + { + ifs.close(); + continue; + } + c2c[i] = core_id; ifs.close(); @@ -169,6 +175,12 @@ CPU::core2cpus() ifs >> core_id; + if(!ifs) + { + ifs.close(); + continue; + } + c2c[core_id].insert(i); ifs.close(); diff --git a/vendored/libfuse/lib/fuse_opt.cpp b/vendored/libfuse/lib/fuse_opt.cpp index 89bd9e80..07eca268 100644 --- a/vendored/libfuse/lib/fuse_opt.cpp +++ b/vendored/libfuse/lib/fuse_opt.cpp @@ -214,23 +214,35 @@ int fuse_opt_match(const struct fuse_opt *opts, const char *opt) return find_opt(opts, opt, &dummy) ? 1 : 0; } -static int process_opt_param(void *var, const char *format, const char *param, - const char *arg) +static +int +process_opt_param(void *var, + const char *format, + const char *param, + const char *arg) { assert(format[0] == '%'); - if (format[1] == 's') + + if(format[1] == 's') { char *copy = strdup(param); - if (!copy) + if(!copy) return alloc_failed(); *static_cast(var) = copy; - } else { - if (sscanf(param, format, static_cast(var)) != 1) { - fprintf(stderr, "fuse: invalid parameter in option `%s'\n", arg); - return -1; } - } + else + { + int rv; + + rv = sscanf(param, format, static_cast(var)); + if(rv != 1) + { + fprintf(stderr,"mergerfs: invalid parameter in option `%s'\n",arg); + return -1; + } + } + return 0; } diff --git a/vendored/libfuse/lib/maintenance_thread.cpp b/vendored/libfuse/lib/maintenance_thread.cpp index 0fca690d..a2be0f49 100644 --- a/vendored/libfuse/lib/maintenance_thread.cpp +++ b/vendored/libfuse/lib/maintenance_thread.cpp @@ -16,7 +16,7 @@ static void* _thread_loop(void *) { - int count; + u64 count; pthread_setname_np(pthread_self(),"fuse.maint"); diff --git a/vendored/libfuse/util/fusermount.cpp b/vendored/libfuse/util/fusermount.cpp index 23b1be0b..bb66d287 100644 --- a/vendored/libfuse/util/fusermount.cpp +++ b/vendored/libfuse/util/fusermount.cpp @@ -445,6 +445,7 @@ static int unmount_fuse_locked(const char *mnt, int quiet, int lazy) } out: + free(copy); if (res == -1) return -1; @@ -688,7 +689,7 @@ static int get_mnt_opts(int flags, char *opts, char **mnt_optsp) if (add_option(mnt_optsp, "user=", strlen(user)) == -1) return -1; - strcat(*mnt_optsp, user); + strcat(*mnt_optsp,user); } return 0; } @@ -992,7 +993,7 @@ static int check_perm(const char **mntp, struct stat *stbuf, int *mountpoint_fd) return -1; } - sprintf(procfile, "/proc/self/fd/%i", *mountpoint_fd); + snprintf(procfile,sizeof(procfile),"/proc/self/fd/%i",*mountpoint_fd); *mntp = procfile; } else { fprintf(stderr,