From 535808c4d93e4637577aa17bf8413a41920dd2d8 Mon Sep 17 00:00:00 2001 From: Joanne Koong Date: Mon, 7 Oct 2024 13:37:20 -0700 Subject: Add libfuse util strtol wrapper Add a wrapper around strtol for more rigorous error checking and convert uses of atoi and strtol to use this instead. --- util/fusermount.c | 14 +++++++++++--- util/meson.build | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'util') diff --git a/util/fusermount.c b/util/fusermount.c index 8528342..b87d8bb 100644 --- a/util/fusermount.c +++ b/util/fusermount.c @@ -10,6 +10,7 @@ #define _GNU_SOURCE /* for clone and strchrnul */ #include "fuse_config.h" #include "mount_util.h" +#include "util.h" #include #include @@ -1500,7 +1501,7 @@ int main(int argc, char *argv[]) static int lazy = 0; static int quiet = 0; char *commfd = NULL; - int cfd; + long cfd; const char *opts = ""; const char *type = NULL; int setup_auto_unmount_only = 0; @@ -1604,13 +1605,20 @@ int main(int argc, char *argv[]) goto err_out; } - cfd = atoi(commfd); + res = libfuse_strtol(commfd, &cfd); + if (res) { + fprintf(stderr, + "%s: invalid _FUSE_COMMFD: %s\n", + progname, commfd); + goto err_out; + + } { struct stat statbuf; fstat(cfd, &statbuf); if(!S_ISSOCK(statbuf.st_mode)) { fprintf(stderr, - "%s: file descriptor %i is not a socket, can't send fuse fd\n", + "%s: file descriptor %li is not a socket, can't send fuse fd\n", progname, cfd); goto err_out; } diff --git a/util/meson.build b/util/meson.build index 01c92f0..0e4b1cc 100644 --- a/util/meson.build +++ b/util/meson.build @@ -1,6 +1,6 @@ fuseconf_path = join_paths(get_option('prefix'), get_option('sysconfdir'), 'fuse.conf') -executable('fusermount3', ['fusermount.c', '../lib/mount_util.c'], +executable('fusermount3', ['fusermount.c', '../lib/mount_util.c', '../lib/util.c'], include_directories: include_dirs, install: true, install_dir: get_option('bindir'), -- cgit v1.2.3