From 174a2ad731055f97838290226d656813143620ca Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 18 Oct 2015 20:42:42 +0000 Subject: Pass current directory as a string rather than a file descriptor because pledge doesn't let us pass directory file descriptors. --- server-client.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'server-client.c') diff --git a/server-client.c b/server-client.c index 10768839..52ced4d4 100644 --- a/server-client.c +++ b/server-client.c @@ -1166,9 +1166,10 @@ server_client_msg_identify(struct client *c, struct imsg *imsg) c->ttyname = xstrdup(data); break; case MSG_IDENTIFY_CWD: - if (datalen != 0) - fatalx("bad MSG_IDENTIFY_CWD size"); - c->cwd = imsg->fd; + if (datalen == 0 || data[datalen - 1] != '\0') + fatalx("bad MSG_IDENTIFY_CWD string"); + if ((c->cwd = open(data, O_RDONLY)) == -1) + c->cwd = open("/", O_RDONLY); break; case MSG_IDENTIFY_STDIN: if (datalen != 0) -- cgit v1.2.3