chiark / gitweb /
man: drop unused <authorgroup> tags from man sources
[elogind.git] / man / sd_bus_creds_get_pid.xml
1 <?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5 <!--
6   SPDX-License-Identifier: LGPL-2.1+
7
8   Copyright © 2014 Zbigniew Jędrzejewski-Szmek
9 -->
10
11 <refentry id="sd_bus_creds_get_pid" xmlns:xi="http://www.w3.org/2001/XInclude">
12
13   <refentryinfo>
14     <title>sd_bus_creds_get_pid</title>
15     <productname>systemd</productname>
16   </refentryinfo>
17
18   <refmeta>
19     <refentrytitle>sd_bus_creds_get_pid</refentrytitle>
20     <manvolnum>3</manvolnum>
21   </refmeta>
22
23   <refnamediv>
24     <refname>sd_bus_creds_get_pid</refname>
25     <refname>sd_bus_creds_get_ppid</refname>
26     <refname>sd_bus_creds_get_tid</refname>
27     <refname>sd_bus_creds_get_uid</refname>
28     <refname>sd_bus_creds_get_euid</refname>
29     <refname>sd_bus_creds_get_suid</refname>
30     <refname>sd_bus_creds_get_fsuid</refname>
31     <refname>sd_bus_creds_get_gid</refname>
32     <refname>sd_bus_creds_get_egid</refname>
33     <refname>sd_bus_creds_get_sgid</refname>
34     <refname>sd_bus_creds_get_fsgid</refname>
35     <refname>sd_bus_creds_get_supplementary_gids</refname>
36     <refname>sd_bus_creds_get_comm</refname>
37     <refname>sd_bus_creds_get_tid_comm</refname>
38     <refname>sd_bus_creds_get_exe</refname>
39     <refname>sd_bus_creds_get_cmdline</refname>
40     <refname>sd_bus_creds_get_cgroup</refname>
41     <refname>sd_bus_creds_get_unit</refname>
42     <refname>sd_bus_creds_get_slice</refname>
43     <refname>sd_bus_creds_get_user_unit</refname>
44     <refname>sd_bus_creds_get_user_slice</refname>
45     <refname>sd_bus_creds_get_session</refname>
46     <refname>sd_bus_creds_get_owner_uid</refname>
47     <refname>sd_bus_creds_has_effective_cap</refname>
48     <refname>sd_bus_creds_has_permitted_cap</refname>
49     <refname>sd_bus_creds_has_inheritable_cap</refname>
50     <refname>sd_bus_creds_has_bounding_cap</refname>
51     <refname>sd_bus_creds_get_selinux_context</refname>
52     <refname>sd_bus_creds_get_audit_session_id</refname>
53     <refname>sd_bus_creds_get_audit_login_uid</refname>
54     <refname>sd_bus_creds_get_tty</refname>
55     <refname>sd_bus_creds_get_unique_name</refname>
56     <refname>sd_bus_creds_get_well_known_names</refname>
57     <refname>sd_bus_creds_get_description</refname>
58
59     <refpurpose>Retrieve fields from a credentials object</refpurpose>
60   </refnamediv>
61
62   <refsynopsisdiv>
63     <funcsynopsis>
64       <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
65
66       <funcprototype>
67         <funcdef>int <function>sd_bus_creds_get_pid</function></funcdef>
68         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
69         <paramdef>pid_t *<parameter>pid</parameter></paramdef>
70       </funcprototype>
71
72       <funcprototype>
73         <funcdef>int <function>sd_bus_creds_get_ppid</function></funcdef>
74         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
75         <paramdef>pid_t *<parameter>ppid</parameter></paramdef>
76       </funcprototype>
77
78       <funcprototype>
79         <funcdef>int <function>sd_bus_creds_get_tid</function></funcdef>
80         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
81         <paramdef>pid_t *<parameter>tid</parameter></paramdef>
82       </funcprototype>
83
84       <funcprototype>
85         <funcdef>int <function>sd_bus_creds_get_uid</function></funcdef>
86         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
87         <paramdef>uid_t *<parameter>uid</parameter></paramdef>
88       </funcprototype>
89
90       <funcprototype>
91         <funcdef>int <function>sd_bus_creds_get_euid</function></funcdef>
92         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
93         <paramdef>uid_t *<parameter>uid</parameter></paramdef>
94       </funcprototype>
95
96       <funcprototype>
97         <funcdef>int <function>sd_bus_creds_get_suid</function></funcdef>
98         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
99         <paramdef>uid_t *<parameter>uid</parameter></paramdef>
100       </funcprototype>
101
102       <funcprototype>
103         <funcdef>int <function>sd_bus_creds_get_fsuid</function></funcdef>
104         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
105         <paramdef>uid_t *<parameter>uid</parameter></paramdef>
106       </funcprototype>
107
108       <funcprototype>
109         <funcdef>int <function>sd_bus_creds_get_gid</function></funcdef>
110         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
111         <paramdef>gid_t *<parameter>gid</parameter></paramdef>
112       </funcprototype>
113
114       <funcprototype>
115         <funcdef>int <function>sd_bus_creds_get_egid</function></funcdef>
116         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
117         <paramdef>gid_t *<parameter>gid</parameter></paramdef>
118       </funcprototype>
119
120       <funcprototype>
121         <funcdef>int <function>sd_bus_creds_get_sgid</function></funcdef>
122         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
123         <paramdef>gid_t *<parameter>gid</parameter></paramdef>
124       </funcprototype>
125
126       <funcprototype>
127         <funcdef>int <function>sd_bus_creds_get_fsgid</function></funcdef>
128         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
129         <paramdef>gid_t *<parameter>gid</parameter></paramdef>
130       </funcprototype>
131
132       <funcprototype>
133         <funcdef>int <function>sd_bus_creds_get_supplementary_gids</function></funcdef>
134         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
135         <paramdef>const gid_t **<parameter>gids</parameter></paramdef>
136       </funcprototype>
137
138       <funcprototype>
139         <funcdef>int <function>sd_bus_creds_get_comm</function></funcdef>
140         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
141         <paramdef>const char **<parameter>comm</parameter></paramdef>
142       </funcprototype>
143
144       <funcprototype>
145         <funcdef>int <function>sd_bus_creds_get_tid_comm</function></funcdef>
146         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
147         <paramdef>const char **<parameter>comm</parameter></paramdef>
148       </funcprototype>
149
150       <funcprototype>
151         <funcdef>int <function>sd_bus_creds_get_exe</function></funcdef>
152         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
153         <paramdef>const char **<parameter>exe</parameter></paramdef>
154       </funcprototype>
155
156       <funcprototype>
157         <funcdef>int <function>sd_bus_creds_get_cmdline</function></funcdef>
158         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
159         <paramdef>char ***<parameter>cmdline</parameter></paramdef>
160       </funcprototype>
161
162       <funcprototype>
163         <funcdef>int <function>sd_bus_creds_get_cgroup</function></funcdef>
164         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
165         <paramdef>const char **<parameter>cgroup</parameter></paramdef>
166       </funcprototype>
167
168       <funcprototype>
169         <funcdef>int <function>sd_bus_creds_get_unit</function></funcdef>
170         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
171         <paramdef>const char **<parameter>unit</parameter></paramdef>
172       </funcprototype>
173
174       <funcprototype>
175         <funcdef>int <function>sd_bus_creds_get_slice</function></funcdef>
176         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
177         <paramdef>const char **<parameter>slice</parameter></paramdef>
178       </funcprototype>
179
180       <funcprototype>
181         <funcdef>int <function>sd_bus_creds_get_user_unit</function></funcdef>
182         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
183         <paramdef>const char **<parameter>unit</parameter></paramdef>
184       </funcprototype>
185
186       <funcprototype>
187         <funcdef>int <function>sd_bus_creds_get_user_slice</function></funcdef>
188         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
189         <paramdef>const char **<parameter>slice</parameter></paramdef>
190       </funcprototype>
191
192       <funcprototype>
193         <funcdef>int <function>sd_bus_creds_get_session</function></funcdef>
194         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
195         <paramdef>const char **<parameter>slice</parameter></paramdef>
196       </funcprototype>
197
198       <funcprototype>
199         <funcdef>int <function>sd_bus_creds_get_owner_uid</function></funcdef>
200         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
201         <paramdef>uid_t *<parameter>uid</parameter></paramdef>
202       </funcprototype>
203
204       <funcprototype>
205         <funcdef>int <function>sd_bus_creds_has_effective_cap</function></funcdef>
206         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
207         <paramdef>int <parameter>capability</parameter></paramdef>
208       </funcprototype>
209
210       <funcprototype>
211         <funcdef>int <function>sd_bus_creds_has_permitted_cap</function></funcdef>
212         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
213         <paramdef>int <parameter>capability</parameter></paramdef>
214       </funcprototype>
215
216       <funcprototype>
217         <funcdef>int <function>sd_bus_creds_has_inheritable_cap</function></funcdef>
218         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
219         <paramdef>int <parameter>capability</parameter></paramdef>
220       </funcprototype>
221
222       <funcprototype>
223         <funcdef>int <function>sd_bus_creds_has_bounding_cap</function></funcdef>
224         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
225         <paramdef>int <parameter>capability</parameter></paramdef>
226       </funcprototype>
227
228       <funcprototype>
229         <funcdef>int <function>sd_bus_creds_get_selinux_context</function></funcdef>
230         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
231         <paramdef>const char **<parameter>context</parameter></paramdef>
232       </funcprototype>
233
234       <funcprototype>
235         <funcdef>int <function>sd_bus_creds_get_audit_session_id</function></funcdef>
236         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
237         <paramdef>uint32_t *<parameter>sessionid</parameter></paramdef>
238       </funcprototype>
239
240       <funcprototype>
241         <funcdef>int <function>sd_bus_creds_get_audit_login_uid</function></funcdef>
242         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
243         <paramdef>uid_t *<parameter>loginuid</parameter></paramdef>
244       </funcprototype>
245
246       <funcprototype>
247         <funcdef>int <function>sd_bus_creds_get_tty</function></funcdef>
248         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
249         <paramdef>const char **<parameter>tty</parameter></paramdef>
250       </funcprototype>
251
252       <funcprototype>
253         <funcdef>int <function>sd_bus_creds_get_unique_name</function></funcdef>
254         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
255         <paramdef>const char **<parameter>name</parameter></paramdef>
256       </funcprototype>
257
258       <funcprototype>
259         <funcdef>int <function>sd_bus_creds_get_well_known_names</function></funcdef>
260         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
261         <paramdef>char ***<parameter>name</parameter></paramdef>
262       </funcprototype>
263
264       <funcprototype>
265         <funcdef>int <function>sd_bus_creds_get_description</function></funcdef>
266         <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
267         <paramdef>const char **<parameter>name</parameter></paramdef>
268       </funcprototype>
269
270     </funcsynopsis>
271   </refsynopsisdiv>
272
273   <refsect1>
274     <title>Description</title>
275
276     <para>These functions return credential information from an
277     <parameter>sd_bus_creds</parameter> object. Credential objects may
278     be created with
279     <citerefentry><refentrytitle>sd_bus_creds_new_from_pid</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
280     in which case they describe the credentials of the process
281     identified by the specified PID, with
282     <citerefentry><refentrytitle>sd_bus_get_name_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
283     in which case they describe the credentials of a bus peer
284     identified by the specified bus name, with
285     <citerefentry><refentrytitle>sd_bus_get_owner_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
286     in which case they describe the credentials of the creator of a
287     bus, or with
288     <citerefentry><refentrytitle>sd_bus_message_get_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
289     in which case they describe the credentials of the sender of the
290     message.</para>
291
292     <para>Not all credential fields are part of every
293     <literal>sd_bus_creds</literal> object. Use
294     <citerefentry><refentrytitle>sd_bus_creds_get_mask</refentrytitle><manvolnum>3</manvolnum></citerefentry>
295     to determine the mask of fields available.</para>
296
297     <para><function>sd_bus_creds_get_pid()</function> will retrieve
298     the PID (process identifier). Similarly,
299     <function>sd_bus_creds_get_ppid()</function> will retrieve the
300     parent PID. Note that PID 1 has no parent process, in which case
301     -ENXIO is returned.</para>
302
303     <para><function>sd_bus_creds_get_tid()</function> will retrieve the
304     TID (thread identifier).</para>
305
306     <para><function>sd_bus_creds_get_uid()</function> will retrieve
307     the numeric UID (user identifier). Similarly,
308     <function>sd_bus_creds_get_euid()</function> returns the effective
309     UID, <function>sd_bus_creds_get_suid()</function> the saved UID
310     and <function>sd_bus_creds_get_fsuid()</function> the file system
311     UID.</para>
312
313     <para><function>sd_bus_creds_get_gid()</function> will retrieve the
314     numeric GID (group identifier). Similarly,
315     <function>sd_bus_creds_get_egid()</function> returns the effective
316     GID, <function>sd_bus_creds_get_sgid()</function> the saved GID
317     and <function>sd_bus_creds_get_fsgid()</function> the file system
318     GID.</para>
319
320     <para><function>sd_bus_creds_get_supplementary_gids()</function>
321     will retrieve the supplementary GIDs list.</para>
322
323     <para><function>sd_bus_creds_get_comm()</function> will retrieve the
324     comm field (truncated name of the executable, as stored in
325     <filename>/proc/<replaceable>pid</replaceable>/comm</filename>).
326     </para>
327
328     <para><function>sd_bus_creds_get_tid_comm()</function> will retrieve
329     the comm field of the thread (as stored in
330     <filename>/proc/<replaceable>pid</replaceable>/task/<replaceable>tid</replaceable>/comm</filename>).
331     </para>
332
333     <para><function>sd_bus_creds_get_exe()</function> will retrieve
334     the path to the program executable (as stored in the
335     <filename>/proc/<replaceable>pid</replaceable>/exe</filename>
336     link, but with the <literal> (deleted)</literal> suffix removed). Note
337     that kernel threads do not have an executable path, in which case
338     -ENXIO is returned.</para>
339
340     <para><function>sd_bus_creds_get_cmdline()</function> will
341     retrieve an array of command line arguments (as stored in
342     <filename>/proc/<replaceable>pid</replaceable>/cmdline</filename>). Note
343     that kernel threads do not have a command line, in which case
344     -ENXIO is returned.</para>
345
346     <para><function>sd_bus_creds_get_cgroup()</function> will retrieve
347     the control group path. See <ulink
348     url="https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt">cgroups.txt</ulink>.
349     </para>
350
351     <para><function>sd_bus_creds_get_unit()</function> will retrieve
352     the systemd unit name (in the system instance of systemd) that the
353     process is a part of. See
354     <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. For
355     processes that are not part of a unit, returns -ENXIO.
356     </para>
357
358     <para><function>sd_bus_creds_get_user_unit()</function> will
359     retrieve the systemd unit name (in the user instance of systemd)
360     that the process is a part of. See
361     <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. For
362     processes that are not part of a user unit, returns -ENXIO.
363     </para>
364
365     <para><function>sd_bus_creds_get_slice()</function> will retrieve
366     the systemd slice (a unit in the system instance of systemd) that
367     the process is a part of. See
368     <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Similarly,
369     <function>sd_bus_creds_get_user_slice()</function> retrieves the
370     systemd slice of the process, in the user instance of systemd.
371     </para>
372
373     <para><function>sd_bus_creds_get_session()</function> will
374     retrieve the identifier of the login session that the process is
375     a part of. Please note the login session may be limited to a stub
376     process or two.  User processes may instead be started from their
377     elogind user manager, e.g. GUI applications started using DBus
378     activation, as well as service processes which are shared between
379     multiple logins of the same user. For processes that are not part
380     of a session, returns -ENXIO.</para>
381
382     <para><function>sd_bus_creds_get_owner_uid()</function> will
383     retrieve the numeric UID (user identifier) of the user who owns
384     the user unit or login session that the process is a part of. See
385     <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
386     For processes that are not part of a user unit or session, returns
387     -ENXIO.
388     </para>
389
390     <para><function>sd_bus_creds_has_effective_cap()</function> will check whether the capability specified by
391     <parameter>capability</parameter> was set in the effective capabilities mask. A positive return value means that it
392     was set, zero means that it was not set, and a negative return value indicates an error. See <citerefentry
393     project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry> and the
394     <varname>AmbientCapabilities=</varname> and <varname>CapabilityBoundingSet=</varname> settings in
395     <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
396     </para>
397
398     <para><function>sd_bus_creds_has_permitted_cap()</function> is
399     similar to <function>sd_bus_creds_has_effective_cap()</function>,
400     but will check the permitted capabilities mask.</para>
401
402     <para><function>sd_bus_creds_has_inheritable_cap()</function> is
403     similar to <function>sd_bus_creds_has_effective_cap()</function>,
404     but will check the inheritable capabilities mask.</para>
405
406     <para><function>sd_bus_creds_has_bounding_cap()</function> is
407     similar to <function>sd_bus_creds_has_effective_cap()</function>,
408     but will check the bounding capabilities mask.</para>
409
410     <para><function>sd_bus_creds_get_selinux_context()</function> will
411     retrieve the SELinux security context (label) of the process.</para>
412
413     <para><function>sd_bus_creds_get_audit_session_id()</function>
414     will retrieve the audit session identifier of the process. Returns
415     -ENXIO for processes that are not part of an audit session.</para>
416
417     <para><function>sd_bus_creds_get_audit_login_uid()</function> will
418     retrieve the audit user login identifier (the identifier of the
419     user who is "responsible" for the session). Returns -ENXIO for
420     processes that are not part of an audit session.</para>
421
422     <para><function>sd_bus_creds_get_tty()</function> will retrieve
423     the controlling TTY, without the prefixing "/dev/". Returns -ENXIO
424     for processes that have no controlling TTY.</para>
425
426     <para><function>sd_bus_creds_get_unique_name()</function> will
427     retrieve the D-Bus unique name. See <ulink
428     url="http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus">The
429     D-Bus specification</ulink>.</para>
430
431     <para><function>sd_bus_creds_get_well_known_names()</function> will
432     retrieve the set of D-Bus well-known names. See <ulink
433     url="http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus">The
434     D-Bus specification</ulink>.</para>
435
436     <para><function>sd_bus_creds_get_description()</function> will
437     retrieve a descriptive name of the bus connection of the
438     peer. This name is useful to discern multiple bus connections by
439     the same peer, and may be altered by the peer with the
440     <citerefentry><refentrytitle>sd_bus_set_description</refentrytitle><manvolnum>3</manvolnum></citerefentry>
441     call.</para>
442
443     <para>All functions that take a <parameter>const
444     char**</parameter> parameter will store the answer there as an
445     address of a NUL-terminated string. It will be valid as long as
446     <parameter>c</parameter> remains valid, and should not be freed or
447     modified by the caller.</para>
448
449     <para>All functions that take a <parameter>char***</parameter>
450     parameter will store the answer there as an address of an array
451     of strings. Each individual string is NUL-terminated, and the
452     array is NULL-terminated as a whole. It will be valid as long as
453     <parameter>c</parameter> remains valid, and should not be freed or
454     modified by the caller.</para>
455   </refsect1>
456
457   <refsect1>
458     <title>Return Value</title>
459
460     <para>On success, these calls return 0 or a positive integer. On
461     failure, these calls return a negative errno-style error code.
462     </para>
463   </refsect1>
464
465   <refsect1>
466     <title>Errors</title>
467
468     <para>Returned errors may indicate the following problems:</para>
469
470     <variablelist>
471       <varlistentry>
472         <term><constant>-ENODATA</constant></term>
473
474         <listitem><para>The given field is not available in the
475         credentials object <parameter>c</parameter>.</para>
476         </listitem>
477       </varlistentry>
478
479       <varlistentry>
480         <term><constant>-ENXIO</constant></term>
481
482         <listitem><para>The given field is not specified for the described
483         process or peer. This will be returned by
484         <function>sd_bus_creds_get_unit()</function>,
485         <function>sd_bus_creds_get_slice()</function>,
486         <function>sd_bus_creds_get_user_unit()</function>,
487         <function>sd_bus_creds_get_user_slice()</function>, and
488         <function>sd_bus_creds_get_session()</function> if the process is
489         not part of a systemd system unit, systemd user unit, systemd
490         slice, or logind session. It will be returned by
491         <function>sd_bus_creds_get_owner_uid()</function> if the process is
492         not part of a elogind user unit or logind session. It will also be
493         returned by <function>sd_bus_creds_get_exe()</function> and
494         <function>sd_bus_creds_get_cmdline()</function> for kernel
495         threads (since these are not started from an executable binary,
496         nor have a command line), and by
497         <function>sd_bus_creds_get_audit_session_id()</function> and
498         <function>sd_bus_creds_get_audit_login_uid()</function> when
499         the process is not part of an audit session, and
500         <function>sd_bus_creds_get_tty()</function> if the process has
501         no controlling TTY.
502         </para>
503         </listitem>
504       </varlistentry>
505
506       <varlistentry>
507         <term><constant>-EINVAL</constant></term>
508
509         <listitem><para>Specified pointer parameter is <constant>NULL</constant>.
510         </para></listitem>
511       </varlistentry>
512
513       <varlistentry>
514         <term><constant>-ENOMEM</constant></term>
515
516         <listitem><para>Memory allocation failed.</para></listitem>
517       </varlistentry>
518     </variablelist>
519   </refsect1>
520
521   <xi:include href="libelogind-pkgconfig.xml" />
522
523   <refsect1>
524     <title>See Also</title>
525
526     <para>
527       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
528       <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
529       <citerefentry><refentrytitle>sd_bus_creds_new_from_pid</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
530       <citerefentry project='man-pages'><refentrytitle>fork</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
531       <citerefentry project='man-pages'><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
532       <citerefentry project='man-pages'><refentrytitle>credentials</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
533       <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
534       <citerefentry project='man-pages'><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
535       <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>
536     </para>
537   </refsect1>
538
539 </refentry>