]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-varlink: refuse accepting more than 253 fds to send along with a Varlink message
authorLennart Poettering <lennart@poettering.net>
Fri, 25 Apr 2025 17:58:22 +0000 (19:58 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 30 Apr 2025 08:34:44 +0000 (10:34 +0200)
253 is the max number of fds one can send at once on a Linux AF_UNIX
socket. Hence refuse to send more early.

src/libsystemd/sd-varlink/sd-varlink.c

index 57d106a39050f8470230f6077d5a0b578ab6b4ec..773f70ede8ef9abed930bad668bf005ad3e58a0c 100644 (file)
@@ -3112,8 +3112,8 @@ _public_ int sd_varlink_push_fd(sd_varlink *v, int fd) {
         if (!v->allow_fd_passing_output)
                 return -EPERM;
 
-        if (v->n_pushed_fds >= INT_MAX)
-                return -ENOMEM;
+        if (v->n_pushed_fds >= SCM_MAX_FD) /* Kernel doesn't support more than 253 fds per message, refuse early hence */
+                return -ENOBUFS;
 
         if (!GREEDY_REALLOC(v->pushed_fds, v->n_pushed_fds + 1))
                 return -ENOMEM;