From d828d9656c3bd1ddf0fcddb578ddb2ed9a4d3701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Sat, 13 Apr 2024 17:13:02 +0100 Subject: [PATCH] acl-permissions: avoid erroneous failure on CIFS * lib/set-permissions.c (set_acls): On Linux also discount EACESS as a valid errno with FD operations, as CIFS was seen to return that erroneously in some cases. --- ChangeLog | 7 +++++++ lib/set-permissions.c | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c72165e268..fd094d1091 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2024-04-13 Pádraig Brady + + acl-permissions: avoid erroneous failure on CIFS + * lib/set-permissions.c (set_acls): On Linux (and others), also discount + EACESS as a valid errno with FD operations, as CIFS was seen to + return that erroneously in some cases. + 2024-04-13 Bruno Haible gnulib-tool.py: Code tweak. diff --git a/lib/set-permissions.c b/lib/set-permissions.c index 83a355faa5..7f8e55f5cd 100644 --- a/lib/set-permissions.c +++ b/lib/set-permissions.c @@ -520,7 +520,13 @@ set_acls (struct permission_context *ctx, const char *name, int desc, ret = acl_set_file (name, ACL_TYPE_ACCESS, ctx->acl); if (ret != 0) { - if (! acl_errno_valid (errno)) + if (! acl_errno_valid (errno) +# if defined __linux__ + /* Special case EACCES for fd operations as CIFS + was seen to erroneously return that in some cases. */ + || (HAVE_ACL_SET_FD && desc != -1 && errno == EACCES) +# endif + ) { ctx->acls_not_supported = true; if (from_mode || acl_access_nontrivial (ctx->acl) == 0) -- 2.44.0