Add handling for '-1' when parsing vsock CID (#42654)

Currently `systemd-ssh-generator` supports
`systemd.ssh_listen=vsock::22` and aliases the "empty CID" towards
`VMADDR_CID_ANY`. VMADDR_CID_ANY is -1, so it's confusing from a user
experience that `systemd.ssh_listen=vsock:-1:22` isn't supported.
This commit is contained in:
Gabriel
2026-06-22 21:57:03 +02:00
committed by GitHub
parent 4729d4514b
commit 983f8610b7
+3 -1
View File
@@ -1730,7 +1730,7 @@ int vsock_parse_cid(const char *s, unsigned *ret) {
return -EINVAL;
/* Parsed an AF_VSOCK "CID". This is a 32bit entity, and the usual type is "unsigned". We recognize
* the three special CIDs as strings, and otherwise parse the numeric CIDs. */
* the four special CIDs as strings, and otherwise parse the numeric CIDs. */
if (streq(s, "hypervisor"))
*ret = VMADDR_CID_HYPERVISOR;
@@ -1738,6 +1738,8 @@ int vsock_parse_cid(const char *s, unsigned *ret) {
*ret = VMADDR_CID_LOCAL;
else if (streq(s, "host"))
*ret = VMADDR_CID_HOST;
else if (STR_IN_SET(s, "any", "-1"))
*ret = VMADDR_CID_ANY;
else
return safe_atou(s, ret);