From fac7b10214e25bc444ca947b770a9ae8227aaa79 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 2 Jan 2007 20:46:29 +0000 Subject: [PATCH] Fix unaligned access in file desctriptor passing --- ChangeLog | 6 ++++++ lib/mount.c | 2 +- lib/ulockmgr.c | 2 +- util/fusermount.c | 2 +- util/ulockmgr_server.c | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9fbdfb7..ae90dfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-01-02 Miklos Szeredi + + * Fix unaligned access in file desctriptor passing in libfuse, + fusermount and ulockmgr. Debian bug ID: 404904. Reported and + tested by Sebastian Fontius + 2006-12-15 Miklos Szeredi * fusermount: Fix detection of fuseblk. Reported by Szakacsits diff --git a/lib/mount.c b/lib/mount.c index a72294b..cbdedf3 100644 --- a/lib/mount.c +++ b/lib/mount.c @@ -151,7 +151,7 @@ static int receive_fd(int fd) struct iovec iov; char buf[1]; int rv; - char ccmsg[CMSG_SPACE(sizeof(int))]; + size_t ccmsg[CMSG_SPACE(sizeof(int)) / sizeof(size_t)]; struct cmsghdr *cmsg; iov.iov_base = buf; diff --git a/lib/ulockmgr.c b/lib/ulockmgr.c index 9e9c2b6..bf27b36 100644 --- a/lib/ulockmgr.c +++ b/lib/ulockmgr.c @@ -75,7 +75,7 @@ static int ulockmgr_send_message(int sock, void *buf, size_t buflen, struct msghdr msg; struct cmsghdr *p_cmsg; struct iovec vec; - char cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_SEND_FDS)]; + size_t cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_SEND_FDS) / sizeof(size_t)]; int res; assert(numfds <= MAX_SEND_FDS); diff --git a/util/fusermount.c b/util/fusermount.c index 41ef53d..7e76803 100644 --- a/util/fusermount.c +++ b/util/fusermount.c @@ -1036,7 +1036,7 @@ static int send_fd(int sock_fd, int fd) struct msghdr msg; struct cmsghdr *p_cmsg; struct iovec vec; - char cmsgbuf[CMSG_SPACE(sizeof(fd))]; + size_t cmsgbuf[CMSG_SPACE(sizeof(fd)) / sizeof(size_t)]; int *p_fds; char sendchar = 0; diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c index 0d00975..211d74a 100644 --- a/util/ulockmgr_server.c +++ b/util/ulockmgr_server.c @@ -58,7 +58,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp, { struct msghdr msg; struct iovec iov; - char ccmsg[CMSG_SPACE(sizeof(int)) * MAX_SEND_FDS]; + size_t ccmsg[CMSG_SPACE(sizeof(int) * MAX_SEND_FDS) / sizeof(size_t)]; struct cmsghdr *cmsg; int res; int i; -- 2.30.2