diff options
Diffstat (limited to 'smb-Ignore-EINVAL-for-kerberos-ccache-login.patch')
-rw-r--r-- | smb-Ignore-EINVAL-for-kerberos-ccache-login.patch | 58 |
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 + |