chiark / gitweb /
3 years agonspawn: allow access to device nodes listed in --bind= and --bind-ro= switches
Stefan Junker [Thu, 14 May 2015 20:51:05 +0000 (22:51 +0200)]
nspawn: allow access to device nodes listed in --bind= and --bind-ro= switches

3 years agotest-bus-chat: various modernizations
Lennart Poettering [Thu, 14 May 2015 20:41:19 +0000 (22:41 +0200)]
test-bus-chat: various modernizations

3 years agoutil: introduce memmem_safe() and make use of it
Lennart Poettering [Thu, 14 May 2015 09:30:59 +0000 (11:30 +0200)]
util: introduce memmem_safe() and make use of it

GNU memmem() requires a nonnull first parameter. Let's introduce
memmem_safe() that removes this restriction for zero-length parameters,
and make use of it where appropriate.

3 years agoutil: use GNU comparison function prototype for qsort_safe()
Lennart Poettering [Thu, 14 May 2015 09:30:14 +0000 (11:30 +0200)]
util: use GNU comparison function prototype for qsort_safe()

3 years agoutil: add generic calls for prefixing a root directory to a path
Lennart Poettering [Wed, 13 May 2015 15:42:10 +0000 (17:42 +0200)]
util: add generic calls for prefixing a root directory to a path

So far a number of utilities implemented their own calls for this, unify
them in prefix_root() and prefix_roota(). The former uses heap memory,
the latter allocates from the stack via alloca().

Port over most users of a --root= logic.

3 years agonspawn: skip symlink to a combined cgroup hierarchy if it already exists
Iago López Galeiras [Wed, 13 May 2015 13:45:49 +0000 (15:45 +0200)]
nspawn: skip symlink to a combined cgroup hierarchy if it already exists

If a symlink to a combined cgroup hierarchy already exists and points to
the right path, skip it. This avoids an error when the cgroups are set
manually before calling nspawn.

3 years agoinstall: when exporting prefix InstallInfo to become UnitFileInstallInfo
Lennart Poettering [Mon, 11 May 2015 20:53:54 +0000 (22:53 +0200)]
install: when exporting prefix InstallInfo to become UnitFileInstallInfo

All other types exported from install.h should be namespaces like this,
hence namespace InstallInfo the same way.

Also, remove external forward definition of UnitFileScope type.

3 years agocore: rename SystemdRunningAs to ManagerRunningAs
Lennart Poettering [Mon, 11 May 2015 20:51:49 +0000 (22:51 +0200)]
core: rename SystemdRunningAs to ManagerRunningAs

It's primarily just a property of the Manager object after all, and we
try to refer to PID 1 as "manager" instead of "systemd", hence let's to
stick to this here too.

3 years agoudevd: make udev_ctrl_connection global
Tom Gundersen [Mon, 11 May 2015 20:17:49 +0000 (22:17 +0200)]
udevd: make udev_ctrl_connection global

This allows us to simplify the ctrl_msg handler. Eventually all this global state should move to
a Manager object or so.

3 years agocore,network: major per-object logging rework
Lennart Poettering [Mon, 11 May 2015 18:38:21 +0000 (20:38 +0200)]
core,network: major per-object logging rework

This changes log_unit_info() (and friends) to take a real Unit* object
insted of just a unit name as parameter. The call will now prefix all
logged messages with the unit name, thus allowing the unit name to be
dropped from the various passed romat strings, simplifying invocations
drastically, and unifying log output across messages. Also, UNIT= vs.
USER_UNIT= is now derived from the Manager object attached to the Unit
object, instead of getpid(). This has the benefit of correcting the
field for --test runs.

Also contains a couple of other logging improvements:

- Drops a couple of strerror() invocations in favour of using %m.

- Not only .mount units now warn if a symlinks exist for the mount
  point already, .automount units do that too, now.

- A few invocations of log_struct() that didn't actually pass any
  additional structured data have been replaced by simpler invocations
  of log_unit_info() and friends.

- For structured data a new LOG_UNIT_MESSAGE() macro has been added,
  that works like LOG_MESSAGE() but prefixes the message with the unit
  name. Similar, there's now LOG_LINK_MESSAGE() and

- For structured data new LOG_UNIT_ID(), LOG_LINK_INTERFACE(),
  LOG_NETDEV_INTERFACE() macros have been added that generate the
  necessary per object fields. The old log_unit_struct() call has been
  removed in favour of these new macros used in raw log_struct()
  invocations. In addition to removing one more function call this
  allows generated structured log messages that contain two object
  fields, as necessary for example for network interfaces that are
  joined into another network interface, and whose messages shall be
  indexed by both.

- The LOG_ERRNO() macro has been removed, in favour of
  log_struct_errno(). The latter has the benefit of ensuring that %m in
  format strings is properly resolved to the specified error number.

- A number of logging messages have been converted to use
  log_unit_info() instead of log_info()

- The client code in sysv-generator no longer #includes core code from

- log_unit_full_errno() has been removed, log_unit_full() instead takes
  an errno now, too.

- log_unit_info(), log_link_info(), log_netdev_info() and friends, now
  avoid double evaluation of their parameters

3 years agoutil: optimize free_and_strdup() if NOP
Lennart Poettering [Mon, 11 May 2015 18:09:58 +0000 (20:09 +0200)]
util: optimize free_and_strdup() if NOP

Under the assumption that strcmp() is cheaper than memory allocation,
let's avoid the allocation, if the new value is identical to the old.

3 years agoshared: Use O_EXCL with O_TMPFILE in open_tmpfile
Cristian Rodríguez [Mon, 11 May 2015 18:01:37 +0000 (15:01 -0300)]
shared: Use O_EXCL with O_TMPFILE in open_tmpfile

In this usecase, the file will never be materialized
with linkat().

3 years agotreewide: Correct typos and spell plural of bus consistent
Torstein Husebø [Mon, 11 May 2015 11:49:29 +0000 (13:49 +0200)]
treewide: Correct typos and spell plural of bus consistent

3 years agosd-bus: fix memory leak in test-bus-chat
Cristian Rodríguez [Sun, 10 May 2015 01:14:09 +0000 (22:14 -0300)]
sd-bus: fix memory leak in test-bus-chat

Building with address sanitizer enabled on GCC 5.1.x a memory leak
is reported because we never close the bus, fix it by using
cleanup variable attribute.

3 years agobus: don't switch to kdbus if not requested
David Herrmann [Wed, 6 May 2015 16:18:43 +0000 (18:18 +0200)]
bus: don't switch to kdbus if not requested

Whenever systemd is re-executed, it tries to create a system bus via
kdbus. If the system did not have kdbus loaded during bootup, but the
module is loaded later on manually, this will cause two system buses
running (kdbus and dbus-daemon in parallel).

This patch makes sure we never try to create kdbus buses if it wasn't
explicitly requested on the command-line.

3 years agoGenerate systemd-fsck-root.service in the initramfs
Zbigniew Jędrzejewski-Szmek [Wed, 6 May 2015 05:09:53 +0000 (01:09 -0400)]
Generate systemd-fsck-root.service in the initramfs

In the initrafms, generate a systemd-fsck-root.service to replace
systemd-fsck@<sysroot-device>.service. This way, after we transition
to the real root, systemd-fsck-root.service is marked as already done.

This introduces an unnecessary synchronization point, because
systemd-fsck@* is ordered after systemd-fsck-root also in the
initramfs. In practice this shouldn't be a problem.

C.f. 956eaf2b8d6c9999024705ddadc7393bc707de02.

3 years agocore: be more strict when manipulating slices names and unescaping paths from unit...
Lennart Poettering [Tue, 5 May 2015 20:39:14 +0000 (13:39 -0700)]
core: be more strict when manipulating slices names and unescaping paths from unit names

Let's better be safe then sorry.

3 years agoFix permissions on /run/systemd/nspawn/locks
Seth Jennings [Tue, 5 May 2015 18:31:01 +0000 (13:31 -0500)]
Fix permissions on /run/systemd/nspawn/locks

machined is getting an EACCES when trying to create the lock file for
images because the mode on /run/systemd/nspawn/locks is 0600.

mkdir("/run/systemd/nspawn/locks", 0600) = -1 EEXIST (File exists)
stat("/run/systemd/nspawn/locks", {st_mode=S_IFDIR|0600, st_size=40, ...}) = 0
open("/run/systemd/nspawn/locks/inode-41:256", O_RDWR|O_CREAT|O_NOCTTY|O_NOFOLLOW|O_CLOEXEC, 0600) = -1 EACCES (Permission denied)

This commit adjusts the mode to 0700 to correct the issue.

3 years agolockfile-util.[ch]: Split out from util.[ch]
Colin Walters [Mon, 4 May 2015 20:12:46 +0000 (16:12 -0400)]
lockfile-util.[ch]: Split out from util.[ch]

Continuing the general trend of splitting up util.[ch].  I specifically
want to reuse this code in and
having it split up will make future copy-pasting easier.

3 years agogenerators: rename add_{root,usr}_mount to add_{sysroot,sysroot_usr}_mount
Zbigniew Jędrzejewski-Szmek [Sat, 2 May 2015 17:01:29 +0000 (12:01 -0500)]
generators: rename add_{root,usr}_mount to add_{sysroot,sysroot_usr}_mount

This makes it obvious that those functions are only usable in the

Also, add a warning when noauto, nofail, or automount is used for the
root fs, instead of silently ignoring. Using those options would be a
sign of significant misconfiguration, and if we bother to check for
them, than let's go all the way and complain.

Other various small cleanups and reformattings elsewhere.

3 years agocore: rework unit name validation and manipulation logic
Lennart Poettering [Thu, 30 Apr 2015 18:21:00 +0000 (20:21 +0200)]
core: rework unit name validation and manipulation logic

A variety of changes:

- Make sure all our calls distuingish OOM from other errors if OOM is
  not the only error possible.

- Be much stricter when parsing escaped paths, do not accept trailing or
  leading escaped slashes.

- Change unit validation to take a bit mask for allowing plain names,
  instance names or template names or an combination thereof.

- Refuse manipulating invalid unit name

3 years agoutil: be a bit safer in path_is_safe()
Lennart Poettering [Thu, 30 Apr 2015 17:44:10 +0000 (19:44 +0200)]
util: be a bit safer in path_is_safe()

We should be more strict when verifying paths with path_is_safe() for
potentially dangerous constructs, and that includes lengths of
PATH_MAX-1 and larger. Be more accurate here.

3 years agocore: catch some special cases in cg_slice_to_path()
Lennart Poettering [Thu, 30 Apr 2015 10:33:35 +0000 (12:33 +0200)]
core: catch some special cases in cg_slice_to_path()

3 years agosym: adding missing symbols to .sym file
Lennart Poettering [Thu, 30 Apr 2015 10:01:19 +0000 (12:01 +0200)]
sym: adding missing symbols to .sym file

3 years agosd-bus,sd-login: add api for querying the slice within the the user systemd instance...
Lennart Poettering [Thu, 30 Apr 2015 09:58:06 +0000 (11:58 +0200)]
sd-bus,sd-login: add api for querying the slice within the the user systemd instance of a process

units are organized in slice trees, not only for the system instance,
but also for user systemd instances, expose this properly.

3 years agosd-bus: when we get ENOTTY on the HELLO ioctl assume incompatible API version
Lennart Poettering [Wed, 29 Apr 2015 23:24:48 +0000 (01:24 +0200)]
sd-bus: when we get ENOTTY on the HELLO ioctl assume incompatible API version

As perparation for future incompatible kdbus kernel API changes.

3 years agocore: rework cgroup path parse logic
Lennart Poettering [Wed, 29 Apr 2015 22:47:41 +0000 (00:47 +0200)]
core: rework cgroup path parse logic

Various cleanups, be stricter when parsing unit paths.

Most importantly: return the root slice "-.slice" when asked for slice
of paths that contain no slice component.

3 years agoman: document when the various sd-login.h calls return ENXIO
Lennart Poettering [Wed, 29 Apr 2015 19:45:45 +0000 (21:45 +0200)]
man: document when the various sd-login.h calls return ENXIO

3 years agosd-bus: properly handle creds that are known but undefined for a process
Lennart Poettering [Wed, 29 Apr 2015 19:40:54 +0000 (21:40 +0200)]
sd-bus: properly handle creds that are known but undefined for a process

A number of fields do not apply to all processes, including: there a
processes without a controlling tty, without parent process, without
service, user services or session. To distuingish these cases from the
case where we simply don't have the data, always return ENXIO for them,
while returning ENODATA for the case where we really lack the

Also update the credentials dumping code to show this properly. Fields
that are known but do not apply are now shown as "n/a".

Note that this also changes some of the calls in process-util.c and
cgroup-util.c to return ENXIO for these cases.

3 years agosd-bus: allow passing NULL as bus parameter to sd_bus_send()
Lennart Poettering [Wed, 29 Apr 2015 16:58:30 +0000 (18:58 +0200)]
sd-bus: allow passing NULL as bus parameter to sd_bus_send()

If NULL is specified for the bus it is now automatically derived from
the passed in message.

This commit also changes a number of invocations of sd_bus_send() to
make use of this.

3 years agosd-bus: drop bus parameter from message callback prototype
Lennart Poettering [Wed, 29 Apr 2015 16:35:10 +0000 (18:35 +0200)]
sd-bus: drop bus parameter from message callback prototype

This should simplify the prototype a bit. The bus parameter is redundant
in most cases, and in the few where it matters it can be derived from
the message via sd_bus_message_get_bus().

3 years agobus-util: drop redundant bus argument from bus_message_map_all_properties() and relat...
Lennart Poettering [Tue, 28 Apr 2015 18:48:54 +0000 (20:48 +0200)]
bus-util: drop redundant bus argument from bus_message_map_all_properties() and related calls

3 years agoexit-status: introduce common exit_status_set_test() call for testing exit status...
Lennart Poettering [Tue, 28 Apr 2015 16:24:20 +0000 (18:24 +0200)]
exit-status: introduce common exit_status_set_test() call for testing exit status set membership

3 years agobus-util: print correct warnings for units that fail but for which we have a NULL...
Lennart Poettering [Tue, 28 Apr 2015 10:12:29 +0000 (12:12 +0200)]
bus-util: print correct warnings for units that fail but for which we have a NULL result only

3 years agopath-util: fix fstat fallback in fd_is_mount_point
Thomas Hindoe Paaboel Andersen [Sun, 26 Apr 2015 13:57:29 +0000 (15:57 +0200)]
path-util: fix fstat fallback in fd_is_mount_point

3 years agosd-device: don't retry loading uevent/db files more than once
Tom Gundersen [Sat, 25 Apr 2015 23:07:42 +0000 (01:07 +0200)]
sd-device: don't retry loading uevent/db files more than once

If for whatever reason there was nothing to load or loading failed, don't keep trying.

3 years agosd-device: don't complain if the uevent file is missing
Tom Gundersen [Sat, 25 Apr 2015 23:04:33 +0000 (01:04 +0200)]
sd-device: don't complain if the uevent file is missing

Only 'real' devices are required to have an uevent file.

3 years agologind: kill newline characters from log_error_errno() calls
Daniel Mack [Fri, 24 Apr 2015 19:44:51 +0000 (21:44 +0200)]
logind: kill newline characters from log_error_errno() calls

log_error_errno() already adds a newline, so drop them.

3 years agosysctl: minor simplifications
Lennart Poettering [Fri, 24 Apr 2015 17:56:24 +0000 (19:56 +0200)]
sysctl: minor simplifications

3 years agoUpdate Spanish translation
Daniel Mustieles [Fri, 24 Apr 2015 13:13:34 +0000 (09:13 -0400)]
Update Spanish translation

3 years agosd-bus: add controlling tty field to sd_creds object
Lennart Poettering [Thu, 23 Apr 2015 17:43:40 +0000 (19:43 +0200)]
sd-bus: add controlling tty field to sd_creds object

This is useful to print wall messages from logind with the right client
tty. (to be added in a later patch)

3 years agoshutdownd: kill the old implementation
Daniel Mack [Thu, 23 Apr 2015 15:30:23 +0000 (17:30 +0200)]
shutdownd: kill the old implementation

Not that all functionality has been ported over to logind, the old
implementation can be removed. There goes one of the oldest parts of
the systemd code base.

3 years agologind: add support for /run/nologin and /run/systemd/shutdown/scheduled
Daniel Mack [Thu, 23 Apr 2015 15:11:28 +0000 (17:11 +0200)]
logind: add support for /run/nologin and /run/systemd/shutdown/scheduled

Port over more code from shutdownd and teach logind to write /run/nologin at
least 5 minutes before the system is going down, and
/run/systemd/shutdown/scheduled when a shutdown is scheduled.

3 years agosd-bus: when bus operations are to be executed on direct connections always fail
Lennart Poettering [Thu, 23 Apr 2015 14:23:15 +0000 (16:23 +0200)]
sd-bus: when bus operations are to be executed on direct connections always fail

Also, don't consider this an loggable event, so that code that tries to
read creds from a direct connection, doesn't generate logs.

3 years agoudevd: fix REMOVE handling
Tom Gundersen [Thu, 23 Apr 2015 13:19:13 +0000 (15:19 +0200)]
udevd: fix REMOVE handling

This reverts b67f944. Lazy loading of device properties does not work for devices
that are received over netlink, as these are sealed. Reinstate the unconditional
loading of the device db.

Reported by: Mantas Mikulėnas <>.

3 years agosd-bus: don't inherit connection creds into message creds when we have a direct conne...
Lennart Poettering [Thu, 23 Apr 2015 11:37:03 +0000 (13:37 +0200)]
sd-bus: don't inherit connection creds into message creds when we have a direct connection

It's never a good idea, let's just not do it, not even on dierct

3 years agopath-util: make use of "mnt_id" field exported in /proc/self/fdinfo/<fd> to test...
Lennart Poettering [Thu, 23 Apr 2015 11:23:03 +0000 (13:23 +0200)]
path-util: make use of "mnt_id" field exported in /proc/self/fdinfo/<fd> to test for mount points

It's a very recent kernel addition, but certainly makes sense to

3 years agohwdb: fix typo - "sort by by..." -> "sort by..."
Peter Hutterer [Thu, 23 Apr 2015 01:10:04 +0000 (11:10 +1000)]
hwdb: fix typo - "sort by by..." -> "sort by..."

3 years agocore: explicitly specify credentials for direct connections, too
Lennart Poettering [Wed, 22 Apr 2015 22:37:47 +0000 (00:37 +0200)]
core: explicitly specify credentials for direct connections, too

So far we authenticate direct connections primarily at connection time,
but let's also do this for each method individually, by attaching the
creds we need for that right away.

3 years agojournalctl: rework code that checks whether we have access to /var/log/journal
Lennart Poettering [Wed, 22 Apr 2015 20:54:23 +0000 (22:54 +0200)]
journalctl: rework code that checks whether we have access to /var/log/journal

- fix some memory leaks on error conditions

- handle all error cases properly, and log about failures

- move HAVE_ACL and no-HAVE_ACL code closer to each other

3 years agolibudev-device: fix lazy loading of devlinks, properties and tags
Tom Gundersen [Wed, 22 Apr 2015 17:01:50 +0000 (19:01 +0200)]
libudev-device: fix lazy loading of devlinks, properties and tags

If the underlying device has not read in the properties yet, the generation will be 0, so
make sure we trigger the reading at least once.

3 years agologind: add code for UTMP wall messages
Daniel Mack [Wed, 22 Apr 2015 15:20:42 +0000 (17:20 +0200)]
logind: add code for UTMP wall messages

Add a timer to print UTMP wall messages so that it repeatedly informs users
about a scheduled shutdown:

 * every 1 minute with less than 10 minutes to go
 * every 15 minutes with less than 60 minutes to go
 * every 30 minutes with less than 180 minutes (3 hours) to go
 * every 60 minutes if more than that to go

This functionality only active if the .EnableWallMessages DBus property
is set to true. Also, a custom string can be added to the wall message,
set through the WallMessagePrefix property.

3 years agobtrfs-util: support recursive removal of read-only subvolumes
Lennart Poettering [Wed, 22 Apr 2015 15:09:20 +0000 (17:09 +0200)]
btrfs-util: support recursive removal of read-only subvolumes

When deleting a read-only subsvolume with a sub-subvolume, we need to
mark it writable first, otherwise the removal will not work.

3 years agobtrfs-util: fix creating recursive read-only snapshots
Lennart Poettering [Wed, 22 Apr 2015 14:52:53 +0000 (16:52 +0200)]
btrfs-util: fix creating recursive read-only snapshots

When creating recursive read-only snapshots we need to mark the snapshot
writable immediately before creating subsnapshots within it, otherwise
the operation for it will fail.

3 years agosd-bus: handle ppid=0 more gracefully (which happens for pid=1)
Lennart Poettering [Wed, 22 Apr 2015 11:27:29 +0000 (13:27 +0200)]
sd-bus: handle ppid=0 more gracefully (which happens for pid=1)

3 years agobtrfs-util: be more careful when invoking btrfs file system ioctls
Lennart Poettering [Wed, 22 Apr 2015 11:11:19 +0000 (13:11 +0200)]
btrfs-util: be more careful when invoking btrfs file system ioctls

If we get passed an fd that does not refer to a regular file or
directory, we should not issue btrfs ioctls on it, since it might end up
in a device driver or similar (note that DRM for example uses the same
ioctl numbers as some file system ioctls).

Hence, let's make sure to always check if something is a regular file or
directory, or is on btrfs before invoking the respective ioctls. It's
better to be safe than sorry.

3 years agobtrfs-util: introduce btrfs_is_filesystem() and make use of it where appropriate
Lennart Poettering [Wed, 22 Apr 2015 11:08:19 +0000 (13:08 +0200)]
btrfs-util: introduce btrfs_is_filesystem() and make use of it where appropriate

Let's unify the code that checks whether an fd is on btrfs a bit.

(Also, rename btrfs_is_snapshot() to btrfs_is_subvol(), since that's
usually how this is referred to in our code)

3 years agoutil: make sure fd refers to regular file or directory when applying file attributes
Lennart Poettering [Wed, 22 Apr 2015 11:05:26 +0000 (13:05 +0200)]
util: make sure fd refers to regular file or directory when applying file attributes

Before invoking file system ioctls we need to make sure that the
specified fd actually refers to a file system object, and not a device
node or similar. Otherwise we might by accident invoke unrelated device
driver ioctls. For example, DRM ioctls use the same ioctl numbers as the
various file system ioctls.

3 years agonetworkd: introduce vti6 tunnel
Susant Sahani [Wed, 22 Apr 2015 08:44:55 +0000 (14:14 +0530)]
networkd: introduce vti6 tunnel

This patch add support to create vti6 tunnel





ip link

11: ip6_vti0@NONE: <NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT
group default
    link/tunnel6 :: brd ::
12: ip6vti@wlan0: <POINTOPOINT,NOARP> mtu 1500 qdisc noop state DOWN
mode DEFAULT group default
    link/tunnel6 2a00:ffde:4567:edde::4987 peer 2001:473:fece:cafe::5179

3 years agosd-bus: expose ppid field
Lennart Poettering [Tue, 21 Apr 2015 18:58:09 +0000 (20:58 +0200)]
sd-bus: expose ppid field

kdbus has been passing us the ppid file for a while, actually make use
of it.

3 years agocore: make unit deserialization more defensive
Lennart Poettering [Tue, 21 Apr 2015 18:22:51 +0000 (20:22 +0200)]
core: make unit deserialization more defensive

3 years agotree-wide: get rid of more strerror() calls
Lennart Poettering [Tue, 21 Apr 2015 16:05:44 +0000 (18:05 +0200)]
tree-wide: get rid of more strerror() calls

3 years agotmpfiles: make /home and /var btrfs subvolumes by default when booted up with them...
Lennart Poettering [Tue, 21 Apr 2015 15:28:16 +0000 (17:28 +0200)]
tmpfiles: make /home and /var btrfs subvolumes by default when booted up with them missing

This way the root subvolume can be left read-only easily, and variable
and user data writable with explicit quota set.

3 years agotmpfiles: there's no systemd-forbid-user-logins.service service
Lennart Poettering [Tue, 21 Apr 2015 15:26:56 +0000 (17:26 +0200)]
tmpfiles: there's no systemd-forbid-user-logins.service service

3 years agolog: move log_syntax() into src/shared/log.c, and make it more similar to the other...
Lennart Poettering [Tue, 21 Apr 2015 15:26:04 +0000 (17:26 +0200)]
log: move log_syntax() into src/shared/log.c, and make it more similar to the other log functions

3 years agosd-device: set_syspath - return ENODEV when passed something that is not a device
Tom Gundersen [Tue, 21 Apr 2015 12:41:13 +0000 (14:41 +0200)]
sd-device: set_syspath - return ENODEV when passed something that is not a device

3 years agosd-bus: when augmenting creds, remember which ones were augmented
Lennart Poettering [Mon, 20 Apr 2015 22:58:08 +0000 (00:58 +0200)]
sd-bus: when augmenting creds, remember which ones were augmented

Also, when we do permissions checks using creds, verify that we don't do
so based on augmented creds, as extra safety check.

3 years agosd-bus: augmenting cgroups-based creds when we have the cgroup path already is free
Lennart Poettering [Mon, 20 Apr 2015 22:53:43 +0000 (00:53 +0200)]
sd-bus: augmenting cgroups-based creds when we have the cgroup path already is free

3 years agosd-bus: when augmenting creds, don't override any creds in any case
Lennart Poettering [Mon, 20 Apr 2015 22:52:24 +0000 (00:52 +0200)]
sd-bus: when augmenting creds, don't override any creds in any case

Let's better be safe than sorry.

3 years agosd-bus: when copying creds objects, make sure we copy even the implicit well known...
Lennart Poettering [Mon, 20 Apr 2015 22:50:43 +0000 (00:50 +0200)]
sd-bus: when copying creds objects, make sure we copy even the implicit well known names

3 years agologind: add .ScheduleShutdown and .CancelScheduledShutdown methods
Daniel Mack [Mon, 20 Apr 2015 13:27:15 +0000 (15:27 +0200)]
logind: add .ScheduleShutdown and .CancelScheduledShutdown methods

Add a method called ScheduleShutdown in org.freedesktop.login1.Manager
which adds a timer to shut down the system at a later point in time.

The first argument holds the type of the schedule that is about to
happen, and must be one of 'reboot', 'halt' or 'poweroff'.

The second argument specifies the absolute time, based on
CLOCK_REALTIME in nanoseconds, at which the the operation should be

To cancel a previously scheduled shutdown, the CancelScheduledShutdown()
can be called, which returns a bool, indicating whether a scheduled
timeout was cancelled.

Also add a new property called ScheduledShutdown which returns the
equivalent to what was passed in via ScheduleShutdown, as '(st)' type.

3 years agologind: factor out polkit checks
Daniel Mack [Mon, 20 Apr 2015 13:19:26 +0000 (15:19 +0200)]
logind: factor out polkit checks

Factor out the code to ask polkit for authorization from
method_do_shutdown_or_sleep() into an own function called

This is needed in order to also use the same checks when shutdown
operations are scheduled. For that, it's also necessary to allow
NULL values for that action{,_multiple_sessions,_ignore_inhibit)
arguments, which will suppress the call if no action string is

3 years agoutil: fix typo
Raul Gutierrez S [Mon, 20 Apr 2015 05:27:45 +0000 (22:27 -0700)]
util: fix typo

3 years agoexit-status: Fix "NOTINSSTALLED" typo
Martin Pitt [Sat, 18 Apr 2015 21:38:13 +0000 (22:38 +0100)]
exit-status: Fix "NOTINSSTALLED" typo

3 years agosd-device: uniformly handle missing devices
Tom Gundersen [Fri, 17 Apr 2015 12:53:02 +0000 (14:53 +0200)]
sd-device: uniformly handle missing devices

sd_device_new_from_* now returns -ENODEV when the device does not exist, and the enumerator
silently drops these errors as missing devices is exepected.

3 years agosd-device: enumerator - match only on initialized devices by default
Tom Gundersen [Fri, 17 Apr 2015 12:11:00 +0000 (14:11 +0200)]
sd-device: enumerator - match only on initialized devices by default

It is still possible to include uninitialized ones, but now that is opt-in. In most
cases people only want initialized devices. Exception is if you want to work without
udev running.

Suggested by David Herrmann.

3 years agosd-device: enumerator - don't expose add_device()
Tom Gundersen [Fri, 17 Apr 2015 11:50:10 +0000 (13:50 +0200)]
sd-device: enumerator - don't expose add_device()

This is rarely, if ever, used. Drop it from the new public API and only keep it for
the legacy API.

Suggested by David Herrmann.

3 years agosd-bus: add more comments to the credential decision logic
Lennart Poettering [Thu, 16 Apr 2015 15:27:51 +0000 (17:27 +0200)]
sd-bus: add more comments to the credential decision logic

3 years agoautomount: add expire support
Michael Olbrich [Tue, 14 Apr 2015 20:01:48 +0000 (22:01 +0200)]
automount: add expire support

3 years agosd-device: fix typo
Zbigniew Jędrzejewski-Szmek [Tue, 14 Apr 2015 16:39:40 +0000 (12:39 -0400)]
sd-device: fix typo

3 years agosd-devcie: fix typo
Tom Gundersen [Tue, 14 Apr 2015 14:55:18 +0000 (16:55 +0200)]
sd-devcie: fix typo

3 years agojournal: use audit event names instead of numbers
Zbigniew Jędrzejewski-Szmek [Tue, 14 Apr 2015 14:29:03 +0000 (10:29 -0400)]
journal: use audit event names instead of numbers

<audit-1400> is replaced by AVC, etc.

A fallback mechanism is provided for unlisted event types.
Occasionally new types are added to the kernel, but not too often.

Add a simple "test", which simply prints the mapping.

3 years agolibudev: make libudev-enumerate a thin wrapper around sd-device
Tom Gundersen [Tue, 14 Apr 2015 14:25:06 +0000 (16:25 +0200)]
libudev: make libudev-enumerate a thin wrapper around sd-device

3 years agosd-device: add device-enumerator library
Tom Gundersen [Tue, 14 Apr 2015 14:22:39 +0000 (16:22 +0200)]
sd-device: add device-enumerator library

3 years agosd-device: fix reading of subsystem
Tom Gundersen [Tue, 14 Apr 2015 14:05:53 +0000 (16:05 +0200)]
sd-device: fix reading of subsystem

3 years agosd-device: allow uevent files to be write-only
Tom Gundersen [Tue, 14 Apr 2015 13:15:49 +0000 (15:15 +0200)]
sd-device: allow uevent files to be write-only

3 years agopam_system: use (void) to silence coverity
Zbigniew Jędrzejewski-Szmek [Mon, 13 Apr 2015 02:41:20 +0000 (22:41 -0400)]
pam_system: use (void) to silence coverity

CID #996284.

3 years agoshared/hashmap: normalize whitespace
Zbigniew Jędrzejewski-Szmek [Sun, 12 Apr 2015 20:04:51 +0000 (16:04 -0400)]
shared/hashmap: normalize whitespace

3 years agopo: update Polish translation
Piotr Drąg [Sat, 11 Apr 2015 23:45:11 +0000 (01:45 +0200)]
po: update Polish translation

3 years agobus-util: add articles to explanation messages
Zbigniew Jędrzejewski-Szmek [Sat, 11 Apr 2015 23:39:30 +0000 (19:39 -0400)]
bus-util: add articles to explanation messages

We are talking about one member of a group of things (resource limits, signals,
timeouts), without specifying which one. An indenfinite article is in order.

When we are talking about the control process, it's a specific one, so the
definite article is used.

3 years agologind: make local functions static
Daniel Mack [Sat, 11 Apr 2015 17:47:12 +0000 (19:47 +0200)]
logind: make local functions static

make manager_gc(), manager_startup(), manager_new(), manager_free()
and manager_run() static, and kill their forward declarations.

3 years agologind: use sd_event timer source for inhibitor logic
Daniel Mack [Sat, 11 Apr 2015 16:44:51 +0000 (18:44 +0200)]
logind: use sd_event timer source for inhibitor logic

Instead of open-coding the delayed action and inhibit timeout logic,
switch over to a real sd_event_source based implementation.

This is not only easier to read but also allows us to add more timers
in the future.

3 years agoshared: move replace_env* from util to env-util
Ronny Chevalier [Fri, 10 Apr 2015 22:25:43 +0000 (00:25 +0200)]
shared: move replace_env* from util to env-util

3 years agoshared: add terminal-util.[ch]
Ronny Chevalier [Fri, 10 Apr 2015 21:15:59 +0000 (23:15 +0200)]
shared: add terminal-util.[ch]

3 years agoshared: add random-util.[ch]
Ronny Chevalier [Fri, 10 Apr 2015 20:27:10 +0000 (22:27 +0200)]
shared: add random-util.[ch]

3 years agoshared: add formats-util.h
Ronny Chevalier [Fri, 10 Apr 2015 18:43:52 +0000 (20:43 +0200)]
shared: add formats-util.h

3 years agoshared: move assert_return_errno() from libudev
Tom Gundersen [Fri, 10 Apr 2015 18:39:43 +0000 (20:39 +0200)]
shared: move assert_return_errno() from libudev

This should not be used for any new code, as we don't set errno in new code,
but there are several legacy users, so let's keep it in shared.

3 years agoshared: add process-util.[ch]
Ronny Chevalier [Fri, 10 Apr 2015 17:10:00 +0000 (19:10 +0200)]
shared: add process-util.[ch]

3 years agosd-event: simplify sd_event_run()
Lennart Poettering [Fri, 10 Apr 2015 16:45:39 +0000 (18:45 +0200)]
sd-event: simplify sd_event_run()

3 years agobus: implement bus_path_{en,de}code_unique()
David Herrmann [Fri, 10 Apr 2015 15:44:30 +0000 (17:44 +0200)]
bus: implement bus_path_{en,de}code_unique()

Whenever we provide a bus API that allows clients to create and manage
server-side objects, we need to provide a unique name for these objects.
There are two ways to provide them:
  1) Let the server choose a name and return it as method reply.
  2) Let the client pass its name of choice in the method arguments.

The first method is the easiest one to implement. However, it suffers from
a race condition: If a client creates an object asynchronously, it cannot
destroy that object until it received the method reply. It cannot know the
name of the new object, thus, it cannot destroy it. Furthermore, this
method enforces a round-trip. If the client _depends_ on the method call
to succeed (eg., it would close() the connection if it failed), the client
usually has no reason to wait for the method reply. Instead, the client
can immediately schedule further method calls on the newly created object
(in case the API guarantees in-order method-call handling).

The second method fixes both problems: The client passes an object name
with the method-call. The server uses it to create the object. Therefore,
the client can schedule object destruction even if the object-creation
hasn't finished, yet (again, requiring in-order method-call handling).
Furthermore, the client can schedule further method calls on the newly
created object, before the constructor returned.

There're two problems to solve, though:
  1) Object names are usually defined via dbus object paths, which are
     usually globally namespaced. Therefore, multiple clients must be able
     to choose unique object names without interference.
  2) If multiple libraries share the same bus connection, they must be
     able to choose unique object names without interference.

The first problem is solved easily by prefixing a name with the
unique-bus-name of a connection. The server side must enforce this and
reject any other name.
The second problem is solved by providing unique suffixes from within
sd-bus. As long as sd-bus always returns a fresh new ID, if requested,
multiple libraries will never interfere. This implementation re-uses
bus->cookie as ID generator, which already provides unique IDs for each
bus connection.

This patch introduces two new helpers:
  bus_path_encode_unique(sd_bus *bus,
                         const char *prefix,
                         const char *sender_id,
                         const char *external_id,
                         char **ret_path);
    This creates a new object-path via the template
    '/prefix/sender_id/external_id'. That is, it appends two new labels to
    the given prefix. If 'sender_id' is NULL, it will use
    bus->unique_name, if 'external_id' is NULL, it will allocate a fresh,
    unique cookie from bus->cookie.

  bus_path_decode_unique(const char *path,
                         const char *prefix,
                         char **ret_sender,
                         char **ret_external);
    This reverses what bus_path_encode_unique() did. It parses 'path' from
    the template '/prefix/sender/external' and returns both suffix-labels
    in 'ret_sender' and 'ret_external'. In case the template does not
    match, 0 is returned and both output arguments are set to NULL.
    Otherwise, 1 is returned and the output arguments contain the decoded

Note: Client-side allocated IDs are inspired by the Wayland protocol
      (which itself was inspired by X11). Wayland uses those IDs heavily
      to avoid round-trips. Clients can create server-side objects and
      send method calls without any round-trip and waiting for any object
      IDs to be returned. But unlike Wayland, DBus uses gobally namespaced
      object names. Therefore, we have to add the extra step by adding the
      unique-name of the bus connection.