summaryrefslogtreecommitdiff
path: root/smb-Ignore-EINVAL-for-kerberos-ccache-login.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-05 02:39:00 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-05 02:39:00 +0000
commitef7c8743e68152d74578415fe7a3aba4adaac198 (patch)
tree8736dbe4a53cca375193a3ff39a57b8acb768e5c /smb-Ignore-EINVAL-for-kerberos-ccache-login.patch
parent1aaf29056c04fb0da4a0d60da0b72d53878cbf18 (diff)
automatic import of gvfsopeneuler24.03_LTS
Diffstat (limited to 'smb-Ignore-EINVAL-for-kerberos-ccache-login.patch')
-rw-r--r--smb-Ignore-EINVAL-for-kerberos-ccache-login.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/smb-Ignore-EINVAL-for-kerberos-ccache-login.patch b/smb-Ignore-EINVAL-for-kerberos-ccache-login.patch
new file mode 100644
index 0000000..28256c9
--- /dev/null
+++ b/smb-Ignore-EINVAL-for-kerberos-ccache-login.patch
@@ -0,0 +1,58 @@
+From 747c7f6ea6c8b6a7ccd008bb47996ba7eb169bcc Mon Sep 17 00:00:00 2001
+From: Ondrej Holy <oholy@redhat.com>
+Date: Mon, 11 Apr 2022 10:54:04 +0200
+Subject: [PATCH] smb: Ignore EINVAL for kerberos/ccache login
+
+With samba 4.16.0, mount operation fails with the "Invalid Argument" error
+when kerberos/ccache is misconfigured. Ignore this error, so user get a chance
+to login using the password...
+
+Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/611
+---
+ daemon/gvfsbackendsmb.c | 8 +++++++-
+ daemon/gvfsbackendsmbbrowse.c | 10 ++++++++--
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
+index 33d1a209..776b67bc 100644
+--- a/daemon/gvfsbackendsmb.c
++++ b/daemon/gvfsbackendsmb.c
+@@ -513,7 +513,13 @@ do_mount (GVfsBackend *backend,
+ if (res == 0)
+ break;
+
+- if (op_backend->mount_cancelled || (errsv != EACCES && errsv != EPERM))
++ if (errsv == EINVAL && op_backend->mount_try <= 1 && op_backend->user == NULL)
++ {
++ /* EINVAL is "expected" when kerberos/ccache is misconfigured, see:
++ * https://gitlab.gnome.org/GNOME/gvfs/-/issues/611
++ */
++ }
++ else if (op_backend->mount_cancelled || (errsv != EACCES && errsv != EPERM))
+ {
+ g_debug ("do_mount - (errno != EPERM && errno != EACCES), cancelled = %d, breaking\n", op_backend->mount_cancelled);
+ break;
+diff --git a/daemon/gvfsbackendsmbbrowse.c b/daemon/gvfsbackendsmbbrowse.c
+index 57bae9db..7e8facfb 100644
+--- a/daemon/gvfsbackendsmbbrowse.c
++++ b/daemon/gvfsbackendsmbbrowse.c
+@@ -967,8 +967,14 @@ do_mount (GVfsBackend *backend,
+ uri, op_backend->mount_try, dir, op_backend->mount_cancelled,
+ errsv, g_strerror (errsv));
+
+- if (dir == NULL &&
+- (op_backend->mount_cancelled || (errsv != EPERM && errsv != EACCES)))
++ if (errsv == EINVAL && op_backend->mount_try == 0 && op_backend->user == NULL)
++ {
++ /* EINVAL is "expected" when kerberos is misconfigured, see:
++ * https://gitlab.gnome.org/GNOME/gvfs/-/issues/611
++ */
++ }
++ else if (dir == NULL &&
++ (op_backend->mount_cancelled || (errsv != EPERM && errsv != EACCES)))
+ {
+ g_debug ("do_mount - (errno != EPERM && errno != EACCES), cancelled = %d, breaking\n", op_backend->mount_cancelled);
+ break;
+--
+2.35.1
+