[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#978091: marked as done (buster-pu: package geoclue-2.0/2.5.2-1)



Your message dated Sat, 06 Feb 2021 10:39:26 +0000
with message-id <6425525e38201ecf9a2d3e0f1e63c0d3b08e0fc0.camel@adam-barratt.org.uk>
and subject line Closing p-u bugs for updates in 10.8
has caused the Debian Bug report #978091,
regarding buster-pu: package geoclue-2.0/2.5.2-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
978091: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=978091
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian.org@packages.debian.org
Usertags: pu

Hello,

[ Reason ]
There are currently several issues with geoclue-2.0 in debian buster:

1) The daemon is not respecting the user choice to not query the
location, that could be seen as a privacy/GDPR breach as it contacts MLS
and sends data (ESSID,..) to them without explicit approval. This is
only happening for "system" (non-flatpak) applications.

2) The indicator (in the gnome-shell,...) showing that geoclue is active
and looking for the location of the computer is never turned on.

3) This version of geoclue is using a generic Mozilla Location service
API key, Mozilla would like us to use a dedicated key for geoclue in
debian: https://gitlab.freedesktop.org/geoclue/geoclue/-/issues/136

[ Impact ]
There is a privacy issue and also the risk that geoclue might stop
working overnight when MLS revoke the API key currently used.

[ Tests ]
Smoke testing on a debian buster VM

[ Risks ]
The changes are minimal and straightforward. All the patches have been
backported from upstream git repository

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]
1) The biggest change is the fact that the daemon will now query the
"agent" (gnome-shell or other) to check the user preference about the
usage of geolocation before querying the location (and contacting MLS).

2) The "in_use" property is set now when there is a client requesting
the location connected.

3) We also change the MLS API key to the one generated especially for
debian and stop exposing it in the configuration file. While testing, I
discovered that the daemon is crashing if submission-url is not defined
in the configuration file, this is fixed as well.

[ Other info ]
NA

-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 5.9.0-5-amd64 (SMP w/8 CPU threads)
Locale: LANG=fr_BE.UTF-8, LC_CTYPE=fr_BE.UTF-8 (charmap=UTF-8), LANGUAGE=fr_BE:fr
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: SELinux: enabled - Mode: Permissive - Policy name: refpolicy
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..7f1315b
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,8 @@
+geoclue-2.0 for Debian
+---------------------
+
+geoclue uses the Mozilla Location Service (MLS) to estimate the location of
+your computer. Please refer to the Privacy Notice on the Mozilla website for
+all privacy concerns: https://location.services.mozilla.com/privacy
+
+ -- Laurent Bigonville <bigon@debian.org>  Thu, 23 Apr 2020 14:28:03 +0200
diff --git a/debian/changelog b/debian/changelog
index 02ce138..4b654ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+geoclue-2.0 (2.5.2-1+deb10u1) buster; urgency=medium
+
+  * debian/README.Debian: Add information about MLS and a link to the service
+    Privacy Notice page
+  * Check the maximum allowed accuracy level even for system applications.
+    Respect the value of the user preference concerning the usage of their
+    geolocation. This should fix the privacy and GDPR conformity concerns as
+    the user explicitly needs to enable the option.
+    Note that there is no distinction between the system applications
+    anymore, turning on the option is allowing them all to get the location.
+    (Closes: #924516, #958497)
+  * d/p/: Add a patch to make the Mozilla API key configurable
+  * debian/rules: Use the key that has been allocated to debian for MLS queries
+  * d/p: Add an upstream patch to fix the display of the usage indicator
+  * Fix crash if submission-url is not set in the config, patch from upstream
+
+ -- Laurent Bigonville <bigon@debian.org>  Fri, 25 Dec 2020 17:19:50 +0100
+
 geoclue-2.0 (2.5.2-1) unstable; urgency=medium
 
   * [da1f3cfb] New upstream version 2.5.2
diff --git a/debian/patches/0001-service-Check-the-maximum-allowed-accuracy-level-eve.patch b/debian/patches/0001-service-Check-the-maximum-allowed-accuracy-level-eve.patch
new file mode 100644
index 0000000..f4183d8
--- /dev/null
+++ b/debian/patches/0001-service-Check-the-maximum-allowed-accuracy-level-eve.patch
@@ -0,0 +1,70 @@
+From: Laurent Bigonville <bigon@bigon.be>
+Date: Fri, 23 Oct 2020 21:37:12 +0200
+Subject: service: Check the maximum allowed accuracy level even for system
+ apps
+
+We need to check the maximum allowed accuracy even for system apps
+otherwise the user cannot disable the geolocalization for these
+(max_accuracy set to 0)
+
+Fix: https://gitlab.freedesktop.org/geoclue/geoclue/-/issues/111
+---
+ src/gclue-service-client.c | 16 +++++-----------
+ 1 file changed, 5 insertions(+), 11 deletions(-)
+
+diff --git a/src/gclue-service-client.c b/src/gclue-service-client.c
+index 247fdb6..62ea932 100644
+--- a/src/gclue-service-client.c
++++ b/src/gclue-service-client.c
+@@ -447,6 +447,7 @@ handle_post_agent_check_auth (StartData *data)
+         GClueConfig *config;
+         GClueAppPerm app_perm;
+         guint32 uid;
++        gboolean system_app;
+ 
+         uid = gclue_client_info_get_user_id (priv->client_info);
+         max_accuracy = gclue_agent_get_max_accuracy_level (priv->agent_proxy);
+@@ -471,8 +472,11 @@ handle_post_agent_check_auth (StartData *data)
+         app_perm = gclue_config_get_app_perm (config,
+                                               data->desktop_id,
+                                               priv->client_info);
++        system_app = (gclue_client_info_get_xdg_id (priv->client_info) == NULL);
+ 
+-        if (app_perm == GCLUE_APP_PERM_ALLOWED) {
++        if (app_perm == GCLUE_APP_PERM_ALLOWED || system_app) {
++                /* Since we have no reliable way to identify system apps, no
++                 * need for auth for them. */
+                 complete_start (data);
+                 return;
+         }
+@@ -556,7 +560,6 @@ gclue_service_client_handle_start (GClueDBusClient       *client,
+         const char *desktop_id;
+         GClueAppPerm app_perm;
+         guint32 uid;
+-        gboolean system_app = FALSE;
+ 
+         if (priv->locator != NULL) {
+                 /* Already started */
+@@ -569,7 +572,6 @@ gclue_service_client_handle_start (GClueDBusClient       *client,
+         if (desktop_id == NULL) {
+                 /* Non-xdg app */
+                 desktop_id = gclue_dbus_client_get_desktop_id (client);
+-                system_app = TRUE;
+         }
+ 
+         if (desktop_id == NULL) {
+@@ -605,14 +607,6 @@ gclue_service_client_handle_start (GClueDBusClient       *client,
+         data->accuracy_level = ensure_valid_accuracy_level
+                 (data->accuracy_level, GCLUE_ACCURACY_LEVEL_EXACT);
+ 
+-        if (system_app) {
+-                /* Since we have no reliable way to identify system apps, no
+-                 * need for auth for them. */
+-                complete_start (data);
+-
+-                return TRUE;
+-        }
+-
+         /* No agent == No authorization */
+         if (priv->agent_proxy == NULL) {
+                 /* Already a pending Start()? Denied! */
diff --git a/debian/patches/0002-config-Make-the-Mozilla-API-key-configurable.patch b/debian/patches/0002-config-Make-the-Mozilla-API-key-configurable.patch
new file mode 100644
index 0000000..d4a8c8c
--- /dev/null
+++ b/debian/patches/0002-config-Make-the-Mozilla-API-key-configurable.patch
@@ -0,0 +1,79 @@
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 1 Oct 2019 13:27:41 +0000
+Subject: config: Make the Mozilla API key configurable
+
+And do not expose it in the configuration file.
+---
+ data/geoclue.conf.in | 18 ++++++++++--------
+ meson.build          |  1 +
+ meson_options.txt    |  3 +++
+ src/gclue-config.c   |  4 ++--
+ 4 files changed, 16 insertions(+), 10 deletions(-)
+
+--- a/data/geoclue.conf.in
++++ b/data/geoclue.conf.in
+@@ -42,13 +42,13 @@ enable=true
+ # Enable WiFi source
+ enable=true
+ 
+-# URL to the wifi geolocation service. The key can currenty be anything, just
+-# needs to be present but that is likely going to change in future.
+-url=https://location.services.mozilla.com/v1/geolocate?key=geoclue
++# URL to the WiFi geolocation service. If not set, defaults to Mozilla's
++# Location Service with a hardcoded key. To use a custom key, uncomment this URL
++# while changing YOUR_KEY to your MLS API key.
++#url=https://location.services.mozilla.com/v1/geolocate?key=YOUR_KEY
+ 
+-# To use the Google geolocation service instead of mozilla's, simply uncomment
+-# this url while changing API_KEY to your Google API key and comment out or
+-# remove the url above.
++# To use the Google geolocation service instead of Mozilla's, uncomment this URL
++# while changing YOUR_KEY to your Google API key.
+ #
+ # WARNING: Please make sure that you are complying with the Google's ToS and
+ #          policies if you uncomment this:
+@@ -63,8 +63,10 @@ url=https://location.services.mozilla.co
+ #
+ submit-data=false
+ 
+-# URL to submission API of Mozilla Location Service
+-submission-url=https://location.services.mozilla.com/v1/submit?key=geoclue
++# URL to submission API of Mozilla Location Service. If not set, defaults to
++# Mozilla's API with a hardcoded key. To use a custom key, uncomment this URL
++# while changing YOUR_KEY to your MLS API key.
++#submission-url=https://location.services.mozilla.com/v1/submit?key=YOUR_KEY
+ 
+ # A nickname to submit network data with. This is currently used for leaderboard:
+ # https://location.services.mozilla.com/leaders
+--- a/meson.build
++++ b/meson.build
+@@ -30,6 +30,7 @@ conf.set_quoted('PACKAGE_BUGREPORT', 'ht
+ conf.set_quoted('TEST_SRCDIR', meson.source_root() + '/data/')
+ conf.set_quoted('LOCALEDIR', localedir)
+ conf.set_quoted('SYSCONFDIR', sysconfdir)
++conf.set_quoted('MOZILLA_API_KEY', get_option('mozilla-api-key'))
+ conf.set10('GCLUE_USE_3G_SOURCE', get_option('3g-source'))
+ conf.set10('GCLUE_USE_CDMA_SOURCE', get_option('cdma-source'))
+ conf.set10('GCLUE_USE_MODEM_GPS_SOURCE', get_option('modem-gps-source'))
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -34,3 +34,6 @@ option('systemd-system-unit-dir',
+ option('dbus-srv-user',
+        type: 'string', value: 'root',
+        description: 'The user (existing) as which the service will run')
++option('mozilla-api-key',
++       type: 'string', value: 'geoclue',
++       description: 'Your API key for Mozilla Location Service')
+--- a/src/gclue-config.c
++++ b/src/gclue-config.c
+@@ -216,8 +216,8 @@ load_enable_source_config (GClueConfig *
+         return enable;
+ }
+ 
+-#define DEFAULT_WIFI_URL "https://location.services.mozilla.com/v1/geolocate?key=geoclue";
+-#define DEFAULT_WIFI_SUBMIT_URL "https://location.services.mozilla.com/v1/submit?key=geoclue";
++#define DEFAULT_WIFI_URL "https://location.services.mozilla.com/v1/geolocate?key="; MOZILLA_API_KEY
++#define DEFAULT_WIFI_SUBMIT_URL "https://location.services.mozilla.com/v1/submit?key="; MOZILLA_API_KEY
+ 
+ static void
+ load_wifi_config (GClueConfig *config)
diff --git a/debian/patches/0003-service-Sync-in_use-property-when-apps-get-connected.patch b/debian/patches/0003-service-Sync-in_use-property-when-apps-get-connected.patch
new file mode 100644
index 0000000..1f5fcb6
--- /dev/null
+++ b/debian/patches/0003-service-Sync-in_use-property-when-apps-get-connected.patch
@@ -0,0 +1,43 @@
+From: Sujanan Bhathiya <sujananbhathiya@gmail.com>
+Date: Mon, 16 Mar 2020 17:19:30 +0530
+Subject: service: Sync in_use property when apps get connected
+
+Earlier we only synced in_use property when apps
+get deleted from the service. Here we set the in_use
+property when apps get connected to the service as well.
+This fixes the issue #112
+---
+ src/gclue-service-manager.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/src/gclue-service-manager.c b/src/gclue-service-manager.c
+index d7f5e55..849debd 100644
+--- a/src/gclue-service-manager.c
++++ b/src/gclue-service-manager.c
+@@ -140,6 +140,14 @@ delete_client (GClueServiceManager *manager,
+         sync_in_use_property (manager);
+ }
+ 
++static void
++on_client_notify_active (GObject    *gobject,
++                         GParamSpec *pspec,
++                         gpointer    user_data)
++{
++        sync_in_use_property (GCLUE_SERVICE_MANAGER (user_data));
++}
++
+ static void
+ on_peer_vanished (GClueClientInfo *info,
+                   gpointer         user_data)
+@@ -216,6 +224,11 @@ complete_get_client (OnClientInfoNewReadyData *data)
+         }
+         g_debug ("Number of connected clients: %u", priv->num_clients);
+ 
++        g_signal_connect (client,
++                          "notify::active",
++                          G_CALLBACK (on_client_notify_active),
++                          data->manager);
++
+         g_signal_connect (info,
+                           "peer-vanished",
+                           G_CALLBACK (on_peer_vanished),
diff --git a/debian/patches/0005-config-Clear-error-after-submission-URL-lookup-fails.patch b/debian/patches/0005-config-Clear-error-after-submission-URL-lookup-fails.patch
new file mode 100644
index 0000000..a438ce3
--- /dev/null
+++ b/debian/patches/0005-config-Clear-error-after-submission-URL-lookup-fails.patch
@@ -0,0 +1,23 @@
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 1 Oct 2019 13:42:11 +0000
+Subject: config: Clear error after submission URL lookup fails
+
+Otherwise we have a dangling pointer causing a crash when the error
+value is reused.
+---
+ src/gclue-config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gclue-config.c b/src/gclue-config.c
+index df4adcc..9ae2367 100644
+--- a/src/gclue-config.c
++++ b/src/gclue-config.c
+@@ -255,7 +255,7 @@ load_wifi_config (GClueConfig *config)
+                                                        &error);
+         if (error != NULL) {
+                 g_debug ("No wifi submission URL: %s", error->message);
+-                g_error_free (error);
++                g_clear_error (&error);
+                 priv->wifi_submit_url = g_strdup (DEFAULT_WIFI_SUBMIT_URL);
+         }
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 3a75c3b..a63e750 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,5 @@
 02-move-demo-lib.patch
+0001-service-Check-the-maximum-allowed-accuracy-level-eve.patch
+0002-config-Make-the-Mozilla-API-key-configurable.patch
+0003-service-Sync-in_use-property-when-apps-get-connected.patch
+0005-config-Clear-error-after-submission-URL-lookup-fails.patch
diff --git a/debian/rules b/debian/rules
index 0580fc3..440da91 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,12 +16,22 @@ ifneq ($(filter nodoc, $(DEB_BUILD_OPTIONS)),)
   BUILD_DOC := -Dgtk-doc=false
 endif
 
+# The following API key has been allocated for Debian only
+# If you are a derivative, please request your own key as discussed here:
+# https://gitlab.freedesktop.org/geoclue/geoclue/-/issues/136
+# See also: https://location.services.mozilla.com/api and
+# https://blog.mozilla.org/services/2019/09/03/a-new-policy-for-mozilla-location-service/
+ifeq ($(shell dpkg-vendor --query vendor),Debian)
+  MLS_API_KEY := -Dmozilla-api-key=484bfbac-6433-4492-aed3-16cc094eff93
+endif
+
 override_dh_auto_configure:
 	dh_auto_configure -- --libexecdir=/usr/lib/geoclue-2.0 \
                              -Ddbus-srv-user=geoclue \
                              -Dsystemd-system-unit-dir=/lib/systemd/system \
 			     ${BUILD_DOC} \
-                             ${MM_NM_FLAGS}
+                             ${MM_NM_FLAGS} \
+                             ${MLS_API_KEY}
 
 override_dh_auto_test:
 	# testsuite fails on missing latitude (et.al)

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 10.8

Hi,

Each of the updates referenced by these bugs was included in today's
10.8 point release.

Regards,

Adam

--- End Message ---

Reply to: