From: Ally Sommers dropbear.sh@gmail.com
--- server/sock.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/server/sock.c b/server/sock.c index 25e72b003c1..37181bd668e 100644 --- a/server/sock.c +++ b/server/sock.c @@ -2664,7 +2664,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) ret = connect( unix_fd, &unix_addr.addr, unix_len ); }
- if (sock->family == WS_AF_UNIX && *((char *)(params + 1) + params->addr_len)) + if (sock->family == WS_AF_UNIX && *(char *)(params + 1)) fchdir(server_dir_fd);
if (ret < 0 && errno != EINPROGRESS) @@ -2991,9 +2991,9 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) if (check_addr_usage( sock, &bind_addr, v6only )) return;
- if (sock->family == WS_AF_UNIX && *(char *)(params + 1)) + if (sock->family == WS_AF_UNIX && *params->addr.sa_data) { - char *unix_path = (char *)(params + 1); + char *unix_path = (char *)¶ms->addr + sizeof(unix_addr.un); char unix_path_copy[PATH_MAX]; strcpy(unix_path_copy, unix_path); if (chdir( dirname( unix_path_copy ) ) == -1)