aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBernd Schubert <bernd@bsbernd.com>2025-01-04 20:29:18 +0100
committerBernd Schubert <bernd@bsbernd.com>2025-02-10 16:56:45 +0100
commit0dd19282594430fe2e2b3aa7f2def466675dcadf (patch)
treeec1b8405451a8d6189656d4b8dd5925b302441ba /lib
parent818e29b467e73a68dc01d11fef747cbcd7b59378 (diff)
downloadlibfuse-0dd19282594430fe2e2b3aa7f2def466675dcadf.tar.gz
Avoid global declarion of internal functions that are new in 3.17
_fuse_new() is not supposed to be called by external users outside of internal functions or static inlined functions. This also removes several functions from lib/fuse_versionscript which where added and exported by commit 58f85bfa9b7d ("Add in the libfuse version a program...) as these are libfuse internal only. Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/fuse.c6
-rw-r--r--lib/fuse_lowlevel.c13
-rw-r--r--lib/fuse_versionscript4
-rw-r--r--lib/helper.c4
4 files changed, 21 insertions, 6 deletions
diff --git a/lib/fuse.c b/lib/fuse.c
index aa5c611..8fbc035 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -5009,6 +5009,12 @@ struct fuse *_fuse_new_317(struct fuse_args *args,
f->conf.readdir_ino = 1;
#endif
+ /* not declared globally, to restrict usage of this function */
+ struct fuse_session *_fuse_session_new(
+ struct fuse_args *args, const struct fuse_lowlevel_ops *op,
+ size_t op_size, struct libfuse_version *version,
+ void *userdata);
+
f->se = _fuse_session_new(args, &llop, sizeof(llop), version, f);
if (f->se == NULL)
goto out_free_fs;
diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c
index d84c678..c993860 100644
--- a/lib/fuse_lowlevel.c
+++ b/lib/fuse_lowlevel.c
@@ -3248,10 +3248,15 @@ int fuse_session_receive_buf_internal(struct fuse_session *se,
FUSE_SYMVER("_fuse_session_new_317", "_fuse_session_new@@FUSE_3.17")
struct fuse_session *_fuse_session_new_317(struct fuse_args *args,
- const struct fuse_lowlevel_ops *op,
- size_t op_size,
- struct libfuse_version *version,
- void *userdata)
+ const struct fuse_lowlevel_ops *op,
+ size_t op_size,
+ struct libfuse_version *version,
+ void *userdata);
+struct fuse_session *_fuse_session_new_317(struct fuse_args *args,
+ const struct fuse_lowlevel_ops *op,
+ size_t op_size,
+ struct libfuse_version *version,
+ void *userdata)
{
int err;
struct fuse_session *se;
diff --git a/lib/fuse_versionscript b/lib/fuse_versionscript
index 14cbca1..f20e2b4 100644
--- a/lib/fuse_versionscript
+++ b/lib/fuse_versionscript
@@ -189,11 +189,11 @@ FUSE_3.12 {
FUSE_3.17 {
global:
+#if !defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)
_fuse_session_new_317;
- _fuse_new;
- _fuse_new_30;
_fuse_new_317;
fuse_main_real_317;
+#endif
fuse_passthrough_open;
fuse_passthrough_close;
fuse_session_custom_io_30;
diff --git a/lib/helper.c b/lib/helper.c
index e84c857..2794e66 100644
--- a/lib/helper.c
+++ b/lib/helper.c
@@ -344,6 +344,10 @@ int fuse_main_real_317(int argc, char *argv[], const struct fuse_operations *op,
goto out1;
}
+ struct fuse *_fuse_new(struct fuse_args *args,
+ const struct fuse_operations *op, size_t op_size,
+ struct libfuse_version *version,
+ void *user_data);
fuse = _fuse_new(&args, op, op_size, version, user_data);
if (fuse == NULL) {
res = 3;