From a51ff7126c34915e3f26a437c13ed9c307975382 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jun 28 2022 10:59:08 +0000 Subject: import evolution-data-server-3.28.5-19.el8_6.1 --- diff --git a/SOURCES/evolution-data-server-3.28.5-google-oauth2.patch b/SOURCES/evolution-data-server-3.28.5-google-oauth2.patch new file mode 100644 index 0000000..71ab3a7 --- /dev/null +++ b/SOURCES/evolution-data-server-3.28.5-google-oauth2.patch @@ -0,0 +1,101 @@ +diff -up evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c.google-oauth2 evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c +--- evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c.google-oauth2 2018-07-30 15:17:06.000000000 +0200 ++++ evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c 2022-05-04 18:57:08.059385307 +0200 +@@ -24,6 +24,7 @@ + #include "e-oauth2-service-google.h" + + /* https://developers.google.com/identity/protocols/OAuth2InstalledApp */ ++/* https://developers.google.com/identity/protocols/oauth2/native-app */ + + /* Forward Declarations */ + static void e_oauth2_service_google_oauth2_service_init (EOAuth2ServiceInterface *iface); +@@ -74,14 +75,60 @@ static const gchar * + eos_google_get_authentication_uri (EOAuth2Service *service, + ESource *source) + { +- return "https://accounts.google.com/o/oauth2/auth"; ++ return "https://accounts.google.com/o/oauth2/v2/auth"; + } + + static const gchar * + eos_google_get_refresh_uri (EOAuth2Service *service, + ESource *source) + { +- return "https://www.googleapis.com/oauth2/v3/token"; ++ return "https://oauth2.googleapis.com/token"; ++} ++ ++static const gchar * ++eos_google_get_redirect_uri (EOAuth2Service *service, ++ ESource *source) ++{ ++ G_LOCK_DEFINE_STATIC (redirect_uri); ++ const gchar *key_name = "oauth2-google-redirect-uri"; ++ gchar *value; ++ ++ G_LOCK (redirect_uri); ++ ++ value = g_object_get_data (G_OBJECT (service), key_name); ++ if (!value) { ++ const gchar *client_id = eos_google_get_client_id (service, source); ++ ++ if (client_id) { ++ GPtrArray *array; ++ gchar **strv; ++ gchar *joinstr; ++ guint ii; ++ ++ strv = g_strsplit (client_id, ".", -1); ++ array = g_ptr_array_new (); ++ ++ for (ii = 0; strv[ii]; ii++) { ++ g_ptr_array_insert (array, 0, strv[ii]); ++ } ++ ++ g_ptr_array_add (array, NULL); ++ ++ joinstr = g_strjoinv (".", (gchar **) array->pdata); ++ /* Use reverse-DNS of the client ID with the below path */ ++ value = g_strconcat (joinstr, ":/oauth2redirect", NULL); ++ ++ g_ptr_array_free (array, TRUE); ++ g_strfreev (strv); ++ g_free (joinstr); ++ ++ g_object_set_data_full (G_OBJECT (service), key_name, value, g_free); ++ } ++ } ++ ++ G_UNLOCK (redirect_uri); ++ ++ return value; + } + + static void +@@ -143,13 +190,13 @@ eos_google_extract_authorization_code (E + + params = soup_form_decode (query); + if (params) { +- const gchar *response; ++ const gchar *code; + +- response = g_hash_table_lookup (params, "response"); +- if (response && g_ascii_strncasecmp (response, "code=", 5) == 0) { +- *out_authorization_code = g_strdup (response + 5); ++ code = g_hash_table_lookup (params, "code"); ++ if (code && *code) { ++ *out_authorization_code = g_strdup (code); + known = TRUE; +- } else if (response && g_ascii_strncasecmp (response, "error", 5) == 0) { ++ } else if (g_hash_table_lookup (params, "error")) { + known = TRUE; + } + +@@ -177,6 +224,7 @@ e_oauth2_service_google_oauth2_service_i + iface->get_client_secret = eos_google_get_client_secret; + iface->get_authentication_uri = eos_google_get_authentication_uri; + iface->get_refresh_uri = eos_google_get_refresh_uri; ++ iface->get_redirect_uri = eos_google_get_redirect_uri; + iface->prepare_authentication_uri_query = eos_google_prepare_authentication_uri_query; + iface->extract_authorization_code = eos_google_extract_authorization_code; + } diff --git a/SPECS/evolution-data-server.spec b/SPECS/evolution-data-server.spec index 36d3749..bf9867f 100644 --- a/SPECS/evolution-data-server.spec +++ b/SPECS/evolution-data-server.spec @@ -32,7 +32,7 @@ Name: evolution-data-server Version: 3.28.5 -Release: 19%{?dist} +Release: 19%{?dist}.1 Group: System Environment/Libraries Summary: Backend data server for Evolution License: LGPLv2+ @@ -103,6 +103,9 @@ Patch16: evolution-data-server-3.28.5-nonstandard-uuencode-encoding.patch # RH bug #1938533 Patch17: evolution-data-server-3.28.5-secret-monitor-warnings.patch +# RH bug #2081986 +Patch18: evolution-data-server-3.28.5-google-oauth2.patch + ### Dependencies ### Requires: dconf @@ -239,6 +242,7 @@ the functionality of the installed %{name} package. %patch15 -p1 -b .calbackendfile-interval-tree-destroy %patch16 -p1 -b .nonstandard-uuencode-encoding %patch17 -p1 -b .secret-monitor-warnings +%patch18 -p1 -b .google-oauth2 %build @@ -500,6 +504,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_datadir}/installed-tests %changelog +* Thu May 05 2022 Milan Crha - 3.28.5-19.1 +- Resolves: #2081986 (Backport patch for Google OAuth2 change) + * Mon Nov 22 2021 Milan Crha - 3.28.5-19 - Resolves: #1938533 (secret-monitor: Turn runtime warnings into debug prints)