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