Accepting request 394794 from GNOME:Factory

1

OBS-URL: https://build.opensuse.org/request/show/394794
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution-ews?expand=0&rev=60
This commit is contained in:
Dominique Leuenberger 2016-05-16 10:01:53 +00:00 committed by Git OBS Bridge
commit 06f3c3ac83
5 changed files with 12 additions and 180 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ab6bba26605d52c934646612edea6d87034f6fdcf987f9486662de622cb3d739
size 708572

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f5ca7a7a0785f2bacb9990128e9e4b3814891387947639abbe646d962fff7a47
size 710460

View File

@ -1,173 +0,0 @@
From 47d23285f08ceb47a092ba6ff1816a4a3f3ac508 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Wed, 20 Apr 2016 22:38:21 +0200
Subject: Ask for password after NTLM/SSO authentication failure
Similar to libsoup, also evolution-ews checks /usr/bin/ntlm_auth
whether a password is required, while this test "fails" and it
looks like the password is never needed. Even the connection fails
later, the code didn't try to ask for the password, but it should.
---
src/addressbook/e-book-backend-ews.c | 7 +++++++
src/calendar/e-cal-backend-ews.c | 5 +++++
src/collection/e-ews-backend.c | 5 +++++
src/configuration/e-ews-config-utils.c | 10 ++++++++--
src/configuration/e-mail-config-ews-autodiscover.c | 12 ++++++++++--
src/server/e-ews-connection-utils.c | 10 ++++++++++
src/server/e-ews-connection-utils.h | 2 ++
7 files changed, 47 insertions(+), 4 deletions(-)
diff --git a/src/addressbook/e-book-backend-ews.c b/src/addressbook/e-book-backend-ews.c
index 7a635ee..61880d8 100644
--- a/src/addressbook/e-book-backend-ews.c
+++ b/src/addressbook/e-book-backend-ews.c
@@ -4202,6 +4202,13 @@ e_book_backend_ews_authenticate_sync (EBackend *backend,
} else {
ews_backend->priv->is_writable = FALSE;
e_backend_set_online (backend, FALSE);
+
+ if (e_ews_connection_utils_get_without_password (ews_settings) &&
+ result == E_SOURCE_AUTHENTICATION_REJECTED &&
+ !e_named_parameters_exists (credentials, E_SOURCE_CREDENTIAL_PASSWORD)) {
+ e_ews_connection_utils_force_off_ntlm_auth_check ();
+ result = E_SOURCE_AUTHENTICATION_REQUIRED;
+ }
}
e_book_backend_set_writable (E_BOOK_BACKEND (backend), ews_backend->priv->is_writable);
diff --git a/src/calendar/e-cal-backend-ews.c b/src/calendar/e-cal-backend-ews.c
index c46dfcd..02ba9cc 100644
--- a/src/calendar/e-cal-backend-ews.c
+++ b/src/calendar/e-cal-backend-ews.c
@@ -4414,6 +4414,11 @@ e_cal_backend_ews_authenticate_sync (EBackend *backend,
ews_start_sync (cal_backend);
cbews_listen_notifications_cb (cal_backend, NULL, ews_settings);
+ } else if (e_ews_connection_utils_get_without_password (ews_settings) &&
+ result == E_SOURCE_AUTHENTICATION_REJECTED &&
+ !e_named_parameters_exists (credentials, E_SOURCE_CREDENTIAL_PASSWORD)) {
+ e_ews_connection_utils_force_off_ntlm_auth_check ();
+ result = E_SOURCE_AUTHENTICATION_REQUIRED;
}
g_object_unref (connection);
diff --git a/src/collection/e-ews-backend.c b/src/collection/e-ews-backend.c
index d09acd9..07ab145 100644
--- a/src/collection/e-ews-backend.c
+++ b/src/collection/e-ews-backend.c
@@ -1045,6 +1045,11 @@ ews_backend_authenticate_sync (EBackend *backend,
e_collection_backend_authenticate_children (E_COLLECTION_BACKEND (backend), credentials);
e_ews_backend_sync_folders (ews_backend, NULL, ews_backend_folders_synced_cb, NULL);
+ } else if (e_ews_connection_utils_get_without_password (ews_settings) &&
+ result == E_SOURCE_AUTHENTICATION_REJECTED &&
+ !e_named_parameters_exists (credentials, E_SOURCE_CREDENTIAL_PASSWORD)) {
+ e_ews_connection_utils_force_off_ntlm_auth_check ();
+ result = E_SOURCE_AUTHENTICATION_REQUIRED;
}
return result;
diff --git a/src/configuration/e-ews-config-utils.c b/src/configuration/e-ews-config-utils.c
index c6bcc7e..604a9be 100644
--- a/src/configuration/e-ews-config-utils.c
+++ b/src/configuration/e-ews-config-utils.c
@@ -383,12 +383,18 @@ e_ews_config_utils_open_connection_for (ESource *source,
if (result != E_SOURCE_AUTHENTICATION_ACCEPTED) {
g_clear_object (&conn);
- break;
+ if (result != E_SOURCE_AUTHENTICATION_REJECTED || local_error)
+ break;
}
- } else {
+ }
+
+ if (!conn) {
EShell *shell;
TryCredentialsData data;
+ e_ews_connection_utils_force_off_ntlm_auth_check ();
+ g_clear_error (&local_error);
+
shell = e_shell_get_default ();
data.ews_settings = g_object_ref (ews_settings);
diff --git a/src/configuration/e-mail-config-ews-autodiscover.c b/src/configuration/e-mail-config-ews-autodiscover.c
index f32db35..ef9d8ab 100644
--- a/src/configuration/e-mail-config-ews-autodiscover.c
+++ b/src/configuration/e-mail-config-ews-autodiscover.c
@@ -169,13 +169,21 @@ mail_config_ews_autodiscover_run_thread (GTask *task,
gboolean success = FALSE;
if (!g_cancellable_set_error_if_cancelled (cancellable, &local_error) && !local_error) {
- if (e_ews_connection_utils_get_without_password (async_context->ews_settings)) {
+ gboolean without_password;
+
+ without_password = e_ews_connection_utils_get_without_password (async_context->ews_settings);
+ if (without_password) {
success = e_ews_autodiscover_ws_url_sync (
async_context->ews_settings, async_context->email_address, "",
cancellable, &local_error);
- } else {
+ }
+
+ if (!without_password || g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_UNAUTHORIZED)) {
EShell *shell;
+ e_ews_connection_utils_force_off_ntlm_auth_check ();
+ g_clear_error (&local_error);
+
shell = e_shell_get_default ();
success = e_credentials_prompter_loop_prompt_sync (e_shell_get_credentials_prompter (shell),
diff --git a/src/server/e-ews-connection-utils.c b/src/server/e-ews-connection-utils.c
index 7bff7b7..a9180b9 100644
--- a/src/server/e-ews-connection-utils.c
+++ b/src/server/e-ews-connection-utils.c
@@ -67,6 +67,8 @@ e_ews_connection_utils_check_element (const gchar *function_name,
return TRUE;
}
+static gboolean force_off_ntlm_auth_check = FALSE;
+
static gboolean
ews_connect_check_ntlm_available (void)
{
@@ -80,6 +82,9 @@ ews_connect_check_ntlm_available (void)
gchar *command;
gint ret;
+ if (force_off_ntlm_auth_check)
+ return FALSE;
+
/* We are attempting to predict what libsoup will do. */
helper = g_getenv ("SOUP_NTLM_AUTH_DEBUG");
if (!helper)
@@ -145,6 +150,11 @@ ews_connect_check_ntlm_available (void)
#endif
}
+void
+e_ews_connection_utils_force_off_ntlm_auth_check (void)
+{
+ force_off_ntlm_auth_check = TRUE;
+}
/* Should we bother to attempt a connection without a password? Remember,
* this is *purely* an optimisation to avoid that extra round-trip if we
diff --git a/src/server/e-ews-connection-utils.h b/src/server/e-ews-connection-utils.h
index 3de7d13..71ad8d3 100644
--- a/src/server/e-ews-connection-utils.h
+++ b/src/server/e-ews-connection-utils.h
@@ -32,6 +32,8 @@ gboolean e_ews_connection_utils_check_element (const gchar *function_name,
const gchar *element_name,
const gchar *expected_name);
+void e_ews_connection_utils_force_off_ntlm_auth_check
+ (void);
gboolean e_ews_connection_utils_get_without_password
(CamelEwsSettings *ews_settings);
--
cgit v0.12

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Tue May 10 17:21:05 UTC 2016 - zaitor@opensuse.org
- Update to version 3.20.2:
+ Ask for password after NTLM/SSO authentication failure.
+ Bugs fixed: bgo#764976, bgo#765209, bgo#765398.
- Drop evolution-ews-ntlm-auth-test-failure.patch: Fixed upstream.
-------------------------------------------------------------------
Fri Apr 22 17:22:16 UTC 2016 - zaitor@opensuse.org

View File

@ -19,15 +19,13 @@
Name: evolution-ews
# This should be updated upon major version changes; it should match BASE_VERSION as defined in configure.in.
%define evolution_base_version 3.20
Version: 3.20.1
Version: 3.20.2
Release: 0
Summary: Exchange Connector for Evolution, compatible with Exchange 2007 and later
License: LGPL-2.1
Group: Productivity/Networking/Email/Clients
Url: http://projects.gnome.org/evolution/
Source: http://download.gnome.org/sources/evolution-ews/3.20/%{name}-%{version}.tar.xz
# PATCH-FIX-UPSTREAM evolution-ews-ntlm-auth-test-failure.patch boo#976110 bgo#765106 zaitor@opensuse.org -- Fix NTLM auth failure with latest samba
Patch0: evolution-ews-ntlm-auth-test-failure.patch
BuildRequires: fdupes
BuildRequires: intltool
BuildRequires: translation-update-upstream
@ -88,7 +86,6 @@ later).
%lang_package
%prep
%setup -q
%patch0 -p1
translation-update-upstream
%build