diff options
-rw-r--r-- | NEWS | 14 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | hwdb/20-bluetooth-vendor-product.hwdb | 66 | ||||
-rw-r--r-- | src/basic/path-util.c | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/GVARIANT-SERIALIZATION | 4 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-common-errors.h | 1 | ||||
-rw-r--r-- | src/login/logind-core.c | 4 | ||||
-rw-r--r-- | src/login/logind-dbus.c | 58 | ||||
-rw-r--r-- | src/login/logind-seat.c | 8 | ||||
-rw-r--r-- | src/login/pam_systemd.c | 10 | ||||
-rw-r--r-- | src/nspawn/nspawn.c | 5 |
11 files changed, 115 insertions, 59 deletions
@@ -19,6 +19,14 @@ CHANGES WITH 222: which enables IPv6 privacy extensions (RFC 4941, "Privacy Extensions for Stateless Address") on selected networks. + * For the sake of fewer build-time dependencies and less code in the + main repository, the python bindings are about to be removed in the + next release. A new repository has been created which accommodates + the code from now on, and we kindly ask distributions to create a + separate package for this. The removal will take place in v223. + + https://github.com/systemd/python-systemd + Contributions from: Abdo Roig-Maranges, Andrew Eikum, Bastien Nocera, Cédric Delmas, Christian Hesse, Christos Trochalakis, Daniel Mack, daurnimator, David Herrmann, Dimitri John Ledkov, Eric Biggers, Eric @@ -27,10 +35,10 @@ CHANGES WITH 222: (heftig), Jan Engelhardt, Jay Strict, Kay Sievers, Lennart Poettering, Markus Knetschke, Martin Pitt, Michael Biebl, Michael Marineau, Michal Sekletar, Miguel Bernal Marin, Peter Hutterer, Richard Maw, rinrinne, - Susant Sahani, Tom Gundersen, Torstein Husebø, Vedran Miletić, WaLyong - Cho, Zbigniew Jędrzejewski-Szmek + Susant Sahani, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein + Husebø, Vedran Miletić, WaLyong Cho, Zbigniew Jędrzejewski-Szmek - -- Berlin, 2015-07-06 + -- Berlin, 2015-07-07 CHANGES WITH 221: diff --git a/configure.ac b/configure.ac index 08a415fe32..6804e03d07 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [221], + [222], [http://github.com/systemd/systemd/issues], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb index b737e6b308..dccced77da 100644 --- a/hwdb/20-bluetooth-vendor-product.hwdb +++ b/hwdb/20-bluetooth-vendor-product.hwdb @@ -1706,3 +1706,69 @@ bluetooth:v0235* bluetooth:v0236* ID_VENDOR_FROM_DATABASE=Pitpatpet Ltd + +bluetooth:v0237* + ID_VENDOR_FROM_DATABASE=MSHeli s.r.l. + +bluetooth:v0238* + ID_VENDOR_FROM_DATABASE=Trakm8 Ltd + +bluetooth:v0239* + ID_VENDOR_FROM_DATABASE=JIN CO, Ltd + +bluetooth:v023A* + ID_VENDOR_FROM_DATABASE=Alatech Technology + +bluetooth:v023B* + ID_VENDOR_FROM_DATABASE=Beijing CarePulse Electronic Technology Co, Ltd + +bluetooth:v023C* + ID_VENDOR_FROM_DATABASE=Awarepoint + +bluetooth:v023D* + ID_VENDOR_FROM_DATABASE=ViCentra B.V. + +bluetooth:v023E* + ID_VENDOR_FROM_DATABASE=Raven Industries + +bluetooth:v023F* + ID_VENDOR_FROM_DATABASE=WaveWare Technologies + +bluetooth:v0240* + ID_VENDOR_FROM_DATABASE=Argenox Technologies + +bluetooth:v0241* + ID_VENDOR_FROM_DATABASE=Bragi GmbH + +bluetooth:v0242* + ID_VENDOR_FROM_DATABASE=16Lab Inc + +bluetooth:v0243* + ID_VENDOR_FROM_DATABASE=Masimo Corp + +bluetooth:v0244* + ID_VENDOR_FROM_DATABASE=Iotera Inc. + +bluetooth:v0245* + ID_VENDOR_FROM_DATABASE=Endress+Hauser + +bluetooth:v0246* + ID_VENDOR_FROM_DATABASE=ACKme Networks, Inc. + +bluetooth:v0247* + ID_VENDOR_FROM_DATABASE=FiftyThree Inc. + +bluetooth:v0248* + ID_VENDOR_FROM_DATABASE=Parker Hannifin Corp + +bluetooth:v0249* + ID_VENDOR_FROM_DATABASE=Transcranial Ltd + +bluetooth:v024A* + ID_VENDOR_FROM_DATABASE=Uwatec AG + +bluetooth:v024B* + ID_VENDOR_FROM_DATABASE=Orlan LLC + +bluetooth:v024C* + ID_VENDOR_FROM_DATABASE=Blue Clover Devices diff --git a/src/basic/path-util.c b/src/basic/path-util.c index 537705446a..8f49d65266 100644 --- a/src/basic/path-util.c +++ b/src/basic/path-util.c @@ -528,7 +528,7 @@ int fd_is_mount_point(int fd, const char *filename, int flags) { * * If that didn't work we will try to read the mount id from * /proc/self/fdinfo/<fd>. This is almost as good as - * name_to_handle_at(), however, does not return the the + * name_to_handle_at(), however, does not return the * opaque file handle. The opaque file handle is pretty useful * to detect the root directory, which we should always * consider a mount point. Hence we use this only as diff --git a/src/libsystemd/sd-bus/GVARIANT-SERIALIZATION b/src/libsystemd/sd-bus/GVARIANT-SERIALIZATION index 859e2715f9..6aeb11364a 100644 --- a/src/libsystemd/sd-bus/GVARIANT-SERIALIZATION +++ b/src/libsystemd/sd-bus/GVARIANT-SERIALIZATION @@ -25,8 +25,8 @@ The header consists of the following: = 12 bytes -This header is then followed by the the fields array, whose first -value is a 32bit array size. +This header is then followed by the fields array, whose first value is +a 32bit array size. When using GVariant we keep the basic structure in place, only slightly alter the header, and define protocol version '2'. The new diff --git a/src/libsystemd/sd-bus/bus-common-errors.h b/src/libsystemd/sd-bus/bus-common-errors.h index b17b62ac93..0dbfbddcf6 100644 --- a/src/libsystemd/sd-bus/bus-common-errors.h +++ b/src/libsystemd/sd-bus/bus-common-errors.h @@ -58,6 +58,7 @@ #define BUS_ERROR_DEVICE_NOT_TAKEN "org.freedesktop.login1.DeviceNotTaken" #define BUS_ERROR_OPERATION_IN_PROGRESS "org.freedesktop.login1.OperationInProgress" #define BUS_ERROR_SLEEP_VERB_NOT_SUPPORTED "org.freedesktop.login1.SleepVerbNotSupported" +#define BUS_ERROR_SESSION_BUSY "org.freedesktop.login1.SessionBusy" #define BUS_ERROR_AUTOMATIC_TIME_SYNC_ENABLED "org.freedesktop.timedate1.AutomaticTimeSyncEnabled" diff --git a/src/login/logind-core.c b/src/login/logind-core.c index a6c01f7d85..96a20e27b9 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -317,7 +317,6 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { int r; assert(m); - assert(session); if (pid < 1) return -EINVAL; @@ -330,7 +329,8 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { if (!s) return 0; - *session = s; + if (session) + *session = s; return 1; } diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 659ce18a48..82654ee8c7 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -689,47 +689,23 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus return r; } - manager_get_session_by_pid(m, leader, &session); - if (!session && vtnr > 0) - session = (vtnr < m->seat0->position_count) ? m->seat0->positions[vtnr] : NULL; - if (session) { - _cleanup_free_ char *path = NULL; - _cleanup_close_ int fifo_fd = -1; - - /* Session already exists, client is probably - * something like "su" which changes uid but is still - * the same session */ - - fifo_fd = session_create_fifo(session); - if (fifo_fd < 0) - return fifo_fd; - - path = session_bus_path(session); - if (!path) - return -ENOMEM; - - log_debug("Sending reply about an existing session: " - "id=%s object_path=%s uid=%u runtime_path=%s " - "session_fd=%d seat=%s vtnr=%u", - session->id, - path, - (uint32_t) session->user->uid, - session->user->runtime_path, - fifo_fd, - session->seat ? session->seat->id : "", - (uint32_t) session->vtnr); - - return sd_bus_reply_method_return( - message, "soshusub", - session->id, - path, - session->user->runtime_path, - fifo_fd, - (uint32_t) session->user->uid, - session->seat ? session->seat->id : "", - (uint32_t) session->vtnr, - true); - } + r = manager_get_session_by_pid(m, leader, NULL); + if (r > 0) + return sd_bus_error_setf(error, BUS_ERROR_SESSION_BUSY, "Already running in a session"); + + /* + * Old gdm and lightdm start the user-session on the same VT as + * the greeter session. But they destroy the greeter session + * after the user-session and want the user-session to take + * over the VT. We need to support this for + * backwards-compatibility, so make sure we allow new sessions + * on a VT that a greeter is running on. + */ + if (vtnr > 0 && + vtnr < m->seat0->position_count && + m->seat0->positions[vtnr] && + m->seat0->positions[vtnr]->class != SESSION_GREETER) + return sd_bus_error_setf(error, BUS_ERROR_SESSION_BUSY, "Already occupied by a session"); audit_session_from_pid(leader, &audit_id); if (audit_id > 0) { diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 23095f51e0..fb5d076311 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -269,7 +269,7 @@ int seat_set_active(Seat *s, Session *session) { int seat_switch_to(Seat *s, unsigned int num) { /* Public session positions skip 0 (there is only F1-F12). Maybe it * will get reassigned in the future, so return error for now. */ - if (!num) + if (num == 0) return -EINVAL; if (num >= s->position_count || !s->positions[num]) { @@ -286,7 +286,7 @@ int seat_switch_to(Seat *s, unsigned int num) { int seat_switch_to_next(Seat *s) { unsigned int start, i; - if (!s->position_count) + if (s->position_count == 0) return -EINVAL; start = 1; @@ -307,7 +307,7 @@ int seat_switch_to_next(Seat *s) { int seat_switch_to_previous(Seat *s) { unsigned int start, i; - if (!s->position_count) + if (s->position_count == 0) return -EINVAL; start = 1; @@ -476,7 +476,7 @@ void seat_evict_position(Seat *s, Session *session) { session->pos = 0; - if (!pos) + if (pos == 0) return; if (pos < s->position_count && s->positions[pos] == session) { diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c index 2f390237dc..f83d18b035 100644 --- a/src/login/pam_systemd.c +++ b/src/login/pam_systemd.c @@ -31,6 +31,7 @@ #include <security/pam_ext.h> #include <security/pam_misc.h> +#include "bus-common-errors.h" #include "util.h" #include "audit.h" #include "macro.h" @@ -399,8 +400,13 @@ _public_ PAM_EXTERN int pam_sm_open_session( remote_host, 0); if (r < 0) { - pam_syslog(handle, LOG_ERR, "Failed to create session: %s", bus_error_message(&error, r)); - return PAM_SYSTEM_ERR; + if (sd_bus_error_has_name(&error, BUS_ERROR_SESSION_BUSY)) { + pam_syslog(handle, LOG_DEBUG, "Cannot create session: %s", bus_error_message(&error, r)); + return PAM_SUCCESS; + } else { + pam_syslog(handle, LOG_ERR, "Failed to create session: %s", bus_error_message(&error, r)); + return PAM_SYSTEM_ERR; + } } r = sd_bus_message_read(reply, diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index ab9fbaf138..198de3097d 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -756,9 +756,8 @@ static int parse_argv(int argc, char *argv[]) { /* If two parameters are specified, * the first one is the lower, the * second one the upper directory. And - * we'll also define the the - * destination mount point the same as - * the upper. */ + * we'll also define the destination + * mount point the same as the upper. */ upper = lower[1]; lower[1] = NULL; |