Commit 1ef2af5a authored by Lennart Poettering's avatar Lennart Poettering

bus: when we unmarshal an fd it should stay owned by the message object

If the user wants the fd to stay valid he should keep a reference to the
message object or duplicate the fd.

This unifies behaviour of demarshalling data fields and unix fds.
parent 50fb9793
......@@ -1710,18 +1710,13 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) {
break;
case SD_BUS_TYPE_UNIX_FD: {
int copy;
uint32_t j;
j = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q);
if (j >= m->n_fds)
return -EBADMSG;
copy = fcntl(m->fds[j], F_DUPFD_CLOEXEC, 3);
if (copy < 0)
return -errno;
*(int*) p = copy;
*(int*) p = m->fds[j];
break;
}
......
......@@ -230,8 +230,6 @@ static int server(sd_bus *bus) {
goto fail;
}
close_nointr_nofail(fd);
r = sd_bus_reply_method_return(bus, m, NULL);
if (r < 0) {
log_error("Failed to send reply: %s", strerror(-r));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment