Package: accountsservice
Version: 0.6.37-3
Severity: normal
Tags: patch

Please apply the attached patch to accountsservice. It fixes a SEGFAULT
crash caused by the creation of invalid DBus paths when users with UID
number greater than 2^31 are present on the system. Because of a wrong
format string, the UID number is rendered as a negative number, but DBus
paths with "-" in them are invalid. So an assertion fails and triggers a
segmentation fault.

Probably it is sensible to forward the patch upstream.

Thanks, Giovanni.

--- System information. ---
Architecture: amd64
Kernel:       Linux 3.14-2-amd64

Debian Release: jessie/sid
  500 unstable        repos.fds-team.de
  500 unstable        ftp.ch.debian.org
  500 stable          dl.google.com
  500 sid             linux.dropbox.com
    1 experimental    ftp.ch.debian.org

--- Package information. ---
Depends                      (Version) | Installed
======================================-+-=============
dbus                                   | 1.8.6-1
libaccountsservice0       (= 0.6.37-3) | 0.6.37-3
init-system-helpers         (>= 1.18~) | 1.20
libc6                         (>= 2.4) |
libglib2.0-0               (>= 2.37.3) |
libpolkit-gobject-1-0        (>= 0.99) |


Package's Recommends field is empty.

Suggests                  (Version) | Installed
===================================-+-===========
gnome-control-center                | 1:3.12.1-4
-- 
Giovanni Mascellani <[email protected]>
PhD Student - Scuola Normale Superiore, Pisa, Italy

http://poisson.phc.unipi.it/~mascellani
Description: Fix generation of invalid DBus path
 Because of a wrong format string, when an UID number is bigger than 2^31
 it is rendered as a negative number. This generates an invalid DBus path,
 because "-" is not allowed in DBus paths.
Author: Giovanni Mascellani <[email protected]>

--- accountsservice-0.6.37.orig/src/user.c
+++ accountsservice-0.6.37/src/user.c
@@ -722,7 +722,7 @@ compute_object_path (User *user)
 {
         gchar *object_path;
 
-        object_path = g_strdup_printf ("/org/freedesktop/Accounts/User%ld",
+        object_path = g_strdup_printf ("/org/freedesktop/Accounts/User%lu",
                                        (long) user->uid);
 
         return object_path;

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to