Merge pull request #27536 from dtardon/checked-fd-parsing

Always check parsed fds for validity
This commit is contained in:
Luca Boccassi
2023-05-05 20:55:48 +01:00
committed by GitHub
14 changed files with 75 additions and 47 deletions
+4 -4
View File
@@ -449,11 +449,11 @@ int bpf_program_deserialize_attachment(const char *v, FDSet *fds, BPFProgram **b
if (r == 0)
return -EINVAL;
r = safe_atoi(sfd, &ifd);
if (r < 0)
return r;
if (ifd < 0)
ifd = parse_fd(sfd);
if (ifd == -ERANGE)
return -EBADF;
if (ifd < 0)
return r;
/* Extract second word: the attach type */
r = extract_first_word(&v, &sat, NULL, 0);
+5 -5
View File
@@ -3060,12 +3060,12 @@ int varlink_server_deserialize_one(VarlinkServer *s, const char *value, FDSet *f
n = strcspn(v, " ");
buf = strndupa_safe(v, n);
r = safe_atoi(buf, &fd);
if (r < 0)
return log_debug_errno(r, "Unable to parse VarlinkServerSocket varlink-server-socket-fd=%s: %m", buf);
if (fd < 0)
fd = parse_fd(buf);
if (fd == -ERANGE)
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL),
"VarlinkServerSocket varlink-server-socket-fd= has an invalid value: %d", fd);
"VarlinkServerSocket varlink-server-socket-fd= has an invalid value: %s", buf);
if (fd < 0)
return log_debug_errno(fd, "Unable to parse VarlinkServerSocket varlink-server-socket-fd=%s: %m", buf);
if (!fdset_contains(fds, fd))
return log_debug_errno(SYNTHETIC_ERRNO(EBADF),
"VarlinkServerSocket varlink-server-socket-fd= has unknown fd %d: %m", fd);