From: Alejandro Colomar <alx@kernel.org>
To: "Günther Noack" <gnoack3000@gmail.com>
Cc: linux-man@vger.kernel.org,
Michael Kerrisk <mtk.manpages@gmail.com>,
Kuniyuki Iwashima <kuniyu@google.com>
Subject: Re: [PATCH 4/7] man/man7/unix.7: SCM_SECURITY: Generalize to other LSMs, not just SELinux
Date: Fri, 23 Oct 2026 11:57:41 +0200 [thread overview]
Message-ID: <atsufiZwUg3d-cKs@debian> (raw)
In-Reply-To: <20261021212256.27961-5-gnoack3000@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3710 bytes --]
Hi Günther,
> Date: 2026-10-21 23:22:53+0200
> From: Günther Noack <gnoack3000@gmail.com>
>
> Reword the description of SCM_SECURITY to not be specific to SELinux.
>
> The security context is populated in scm_passec() in linux.git
> net/core/scm.c, through the security_secid_to_secctx() LSM hook, which
> is currently implemented by SELinux, Smack and AppArmor.
>
> Also clarify the properties of the returned string:
>
> * There is no NAME_MAX limit on the length; SELinux contexts can be
> longer than that. If the control buffer is too small, put_cmsg()
> truncates the data and sets MSG_CTRUNC.
>
> * Whether the string is null-terminated also depends on the LSM:
> SELinux includes the null byte in the length, but smack_to_secctx()
> in security/smack/smack_lsm.c uses strlen() and doesn't.
...
> Fixes: ffad6a017f91 (2018-07-28; "unix.7: Document SCM_SECURITY ancillary data")
> Cc: Michael Kerrisk <mtk.manpages@gmail.com>
> Cc: Kuniyuki Iwashima <kuniyu@google.com>
> Assisted-by: LLM
> Signed-off-by: Günther Noack <gnoack3000@gmail.com>
> ---
>
> Notes:
> This feature is also available in other LSMs. Unfortunately, they
> implemented it inconsistently and that complicates the description of
> how string boundaries are handled. Linux does indeed neither
> guarantee that this terminates with a NUL byte, nor that NAME_MAX is
> large enough to hold it.
...
>
> This is the verbose variant, but I am open for suggestions regarding
> what level of detail is appropriate here.
>
> man/man7/unix.7 | 25 +++++++++++++++++++------
> 1 file changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/man/man7/unix.7 b/man/man7/unix.7
> index ded82768322b..4abd216d19c7 100644
> --- a/man/man7/unix.7
> +++ b/man/man7/unix.7
> @@ -317,7 +317,7 @@ and returned as the result of
> is an integer boolean flag.
> .TP
> .B SO_PASSSEC
> -Enables receiving of the SELinux security label of the peer socket
> +Enables receiving of the security label of the peer socket
> in an ancillary message of type
> .B SCM_SECURITY
> (see below).
> @@ -544,13 +544,26 @@ message, the
> option must be enabled on the socket.
> .TP
> .B SCM_SECURITY
> -Receive the SELinux security context (the security label)
> -of the peer socket.
> -The received ancillary data is a null-terminated string containing
> +Receive the security context (the security label)
> +of the peer socket,
> +as provided by the active Linux Security Module (LSM),
> +such as SELinux or Smack.
> +The received ancillary data is a string containing
> the security context.
> -The receiver should allocate at least
> +Whether the string includes a terminating null byte
> +depends on the LSM;
This seems to contradict the commit message. The commit message says
that the string is terminated, but that the reported length might or
might not be off-by-one (i.e., not count or count the '\0').
This text, however, is saying that in some cases there might not be
a '\0' at all.
Am I missing something?
Have a lovely day!
Alex
> +the length of the data is given by the
> +.I cmsg_len
> +field.
> +There is no fixed limit on the length of the security context;
> +allocating
> .B NAME_MAX
> -bytes in the data portion of the ancillary message for this data.
> +bytes in the data portion of the ancillary message
> +is usually enough.
> +If the buffer is too small,
> +the data is truncated and the
> +.B MSG_CTRUNC
> +flag is set (see below).
> .IP
> To receive the security context, the
> .B SO_PASSSEC
> --
> 2.56.0
>
>
--
<https://www.alejandro-colomar.es>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2026-10-23 9:57 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 21:22 [PATCH 0/7] unix.7: Socket Options and SCM_* fixes Günther Noack
2026-10-21 21:22 ` [PATCH 1/7] man/man7/unix.7: ERRORS: ETOOMANYREFS: Fix the conditions Günther Noack
2026-10-22 21:14 ` Alejandro Colomar
2026-10-23 16:50 ` Günther Noack
2026-10-24 4:45 ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 2/7] man/man7/unix.7: Multiple same-typed SCM_* messages may be sent in one message Günther Noack
2026-10-22 21:28 ` Alejandro Colomar
2026-10-23 17:09 ` Günther Noack
2026-10-21 21:22 ` [PATCH 3/7] man/man7/unix.7: Autobind: Clarify when it happens, and mention SO_PASSPIDFD Günther Noack
2026-10-24 4:57 ` Kuniyuki Iwashima
2026-10-26 21:55 ` Günther Noack
2026-10-27 5:04 ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 4/7] man/man7/unix.7: SCM_SECURITY: Generalize to other LSMs, not just SELinux Günther Noack
2026-10-23 9:57 ` Alejandro Colomar [this message]
2026-10-23 17:57 ` Günther Noack
2026-10-23 18:13 ` Alejandro Colomar
2026-10-26 22:41 ` Günther Noack
2026-10-27 8:54 ` Günther Noack
2026-10-27 21:46 ` Alejandro Colomar
2026-10-27 22:30 ` Günther Noack
2026-10-27 22:59 ` Alejandro Colomar
2026-10-28 6:19 ` Günther Noack
2026-10-28 12:45 ` Alejandro Colomar
2026-10-27 16:32 ` Casey Schaufler
2026-10-27 21:52 ` Alejandro Colomar
2026-10-21 21:22 ` [PATCH 5/7] man/man7/unix.7: SO_PASSSEC: wfix Günther Noack
2026-10-24 5:02 ` Kuniyuki Iwashima
2026-10-24 8:36 ` Alejandro Colomar
2026-10-26 22:42 ` Günther Noack
2026-10-27 5:05 ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 6/7] man/man7/unix.7: Document SO_PASSPIDFD, SO_PEERPIDFD, and SCM_PIDFD Günther Noack
2026-10-24 5:22 ` Kuniyuki Iwashima
2026-10-26 23:02 ` Günther Noack
2026-10-27 5:06 ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 7/7] man/man7/unix.7: Document SO_PASSRIGHTS Günther Noack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=atsufiZwUg3d-cKs@debian \
--to=alx@kernel.org \
--cc=gnoack3000@gmail.com \
--cc=kuniyu@google.com \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox